ansible是用来对批量机器执行命令的工具;
筹备环境:
管制机器:192.168.182.102
业务主机:192.168.182.100,192.168.182.101
ansible装置与配置
- yum install epel-release ansible -y
- 配置须要执行命令的主机,vim /etc/ansible/hosts
默认是没有任何主机的,能够按标签增加主机,如图所示,我增加了test1标签和test2标签 -
接下来须要配置主机的明码
ssh-keygen -t rsa
默认密钥是会生成明码的,为了记住明码,须要执行以下命令,~/.ssh/id_rsa是你生成密钥时的默认文件门路;
ssh-agent bash ssh-add ~/.ssh/id_rsa
-
将公钥复制到业务主机上,执行如下命令
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下看到增加的公钥
-
ansible的配置寄存于/etc/ansible/ansible.cfg,介绍两个比拟罕用的配置
# 每次执行ansible命令是否校验ssh host key host_key_checking = False # 开启日志记录 log_path = /var/log/ansible.log
- 执行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
- shell(win_shell)
执行一条shell命令,具体是调用了/bin/sh - command(win_command),看文档貌似不反对局部字符,用法与shell相似,因为不反对“|”字符,所以不反对管道操作
- copy,复制文件到业务主机上
- file, 与文件相干的操作,删除刚刚复制的文件
- 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
发表回复