关于运维:自动化运维工具ansible的简单使用

37次阅读

共计 1611 个字符,预计需要花费 5 分钟才能阅读完成。

ansible 是用来对批量机器执行命令的工具;

筹备环境:
管制机器:192.168.182.102
业务主机:192.168.182.100,192.168.182.101

ansible 装置与配置

  1. yum install epel-release ansible -y
  2. 配置须要执行命令的主机,vim /etc/ansible/hosts
    默认是没有任何主机的,能够按标签增加主机,如图所示,我增加了 test1 标签和 test2 标签
  3. 接下来须要配置主机的明码

    ssh-keygen -t rsa

    默认密钥是会生成明码的,为了记住明码,须要执行以下命令,~/.ssh/id_rsa 是你生成密钥时的默认文件门路;

    ssh-agent bash
    ssh-add ~/.ssh/id_rsa
  4. 将公钥复制到业务主机上,执行如下命令

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.182.100
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.182.101

    能够在业务主机的~/.ssh/authorized_keys 下看到增加的公钥

  5. ansible 的配置寄存于 /etc/ansible/ansible.cfg,介绍两个比拟罕用的配置

    # 每次执行 ansible 命令是否校验 ssh host key
    host_key_checking = False
    # 开启日志记录
    log_path = /var/log/ansible.log
  6. 执行 ansible 命令,格局为:
    ansible 主机或者主机组 -m 模式 -a 参数
    例如执行一个 ping 命令

主机组就是在 /etc/ansible/hosts 文件的配置, 例如指定 test1 的主机组

ansible test1 -m ping

貌似只反对单个 tag 或者 all,all 就是蕴含所有的 tag
ansible all -m ping

罕用的 module

具体的 module 有哪些, 这里只会介绍命令的用法,不会介绍他们的区别,如果想要理解真正的原理,倡议查看文档或者源码,文档能够通过 ansible-doc module-name 查看,源码在 /usr/lib/python2.7/site-packages/ansible/modules

  1. shell(win_shell)
    执行一条 shell 命令,具体是调用了 /bin/sh
  2. command(win_command),看文档貌似不反对局部字符, 用法与 shell 相似,因为不反对“|”字符,所以不反对管道操作
  3. copy,复制文件到业务主机上
  4. file,与文件相干的操作,删除刚刚复制的文件
  5. script,相当于将脚本复制到业务机上,执行该脚本,而后删除该脚本,即便该脚本没有执行权限,依然会执行该脚本

ansible-playbook

将工作写入到 yml 文件中,进行批量工作操作;实例如下

- hosts: all
  tasks:
    - name: create test3 file
      file: path=/opt/test3.txt state=touch
      when: GO111MODULE == "on"
    - name: create test2 file
      file: path=/opt/test2.txt state=touch
      when: GO111MODULE == "off"
      notify:
        - create test3 file

hosts:是须要执行的工作的主机组
tasks:执行的工作列表
每个工作有如下参数:
name:工作的名称
上图中的 file: path=/opt/test3.txt state=touch 示意 module name 为 file,参数为 path=/opt/test3.txt state=touch 的工作,能够替换为任何其余的 module name 和参数
when:if 判断,只有返回 false 的才会执行该工作,然而貌似只反对 ansible 本人有的变量
notify: 当工作状态为 change 时会触发 notify,并执行相应的 task

正文完
 0