1、模块使用方法

ansible -i /etc/ansible/spahosts SPA -m ping -k
spahosts:存放主机IP地址
SPA:spahosts 中的主机组
-m:指定模块(默认是command模块)
-a:指定模块的参数
-u:指定执行远程主机的用户(默认是root)ansible.cfg中可配置
-k:指定远程主机的密码
-s:以sudo方式运行
-U:sudo到那个用户(默认是root)
-f:指定多少个进程并发处理(默认是5)
—private-key=/path:指定私钥路径
-T:ssh连接超时时间(默认(10s)
-t:日志输出到该目录
-v:显示详细信息

ansible -i /etc/ansible/spahosts SPA -m shell -a ‘timedatectl status | grep Time’
#ansible test -m copy -a “src=/etc/sysconfig/iptables dest=/tmp”
#ansible test -m script -a “/server/scripts/test.sh” #将本地脚本中的信息,在远程主机上执行

2、ansible-playbook编写格式

核心规则:
1、有效的利用空格进行剧本的编写,剧本编写是不支持tab的
2、每一个”-“和”:”后面都有一个空格

命令参考1
- hosts: web #web组所有机器
remote_user: root #远程用户, 默认是root用户
tasks: # 要执行的任务组
- name: createuser # 任务名
user: name=user1 state=present # 相当于 ansible -m user -a ‘name=user1 state=present’
- name: creategroup # 任务名
group: name=group1 # 相当于 ansible -m group -i ‘name=group1’

playbook传参数
传参方式1:在命令行里面传值
ansible-playbook testyml —extra-vars “hosts=vm-1 user=root”
#还可以用json格式传递参数:
ansible-playbook test.yml —extra-vars “{‘hosts’:’vm-1’, ‘user’:’root’}”
#还可以将参数放在文件里面:
ansible-playbook test.yml —extra-vars “@vars.json”

yaml文件playbook.yml:
- hosts: web
remote_user: root
tasks:
- name: createuser
user: name={{ user }} state=absent

执行命令:
ansible-playbook -e user=user1 pbook.yml # 将user1传递给文件中的user后执行命令

传参方式2:hosts文件里面主机后面写
1,打开ansible hosts文件:

vim /etc/ansible/hosts

#修改如下配置然后保存退出
[web] #web组
192.168.12.91 user=user1
192.168.12.92 user=user2
192.168.12.93 user=user3
[db] #db组
192.168.12.93
2,执行playbook文件
#文件playbook.yml内容:

- hosts: web
remote_user: root
tasks:
- name: createuser
user: name={{ user }} #这里的user对应hosts文件中user变量

执行文件:
ansible-playbook pbook.yml

传参方式3:hosts文件里面写[groupname:vars]
1,打开ansible hosts文件
vim /etc/ansible/hosts

#修改ansible hosts文件
[web]
192.168.12.91
192.168.12.92
192.168.12.93
[db]
192.168.12.93

[web:vars] #web组所有主机指定同一个user变量user3
user=user3

2,执行playbook文件

playbook.yml文件内容:

- hosts: web
remote_user: root
tasks:
- name: createuser
user: name={{ user }} #这里的user对应hosts文件中user变量

ansible-playbook pbook.yml

vim pbook.yml

#添加最后两行内容:
- hosts: web
remote_user: root
tasks:
- name: createuser
user: name={{ user }}
vars:
- user: user5

2,执行文件:
ansible-playbook pbook.yml

传参方式5:通过register注册,使用的时候要使用参数的.stdout值
1,打开pbook.yml文件:
vim pbook.yml

#修改后的文件如下:
- hosts: web
remote_user: root
tasks:
- name: sum
shell: echo user10
register: user
- name: createuser
user: name={{ user.stdout }}
3,保存退出,执行pbook.yml文件
ansible-playbook pbook.yml

3、ansible穿透

ansible -i ansible/hosts-test all —ssh-common-args=’-o ProxyCommand=”sshpass -pPASSWD ssh -p8220 -lhuangjc gateway.jpushoa.com -W %h:%p”‘ -uhuangjc -k -b -mshell -a’ip a|grep eth0’