ansible配置文件简述和部署ansible
[defaults]
#inventory = /etc/ansible/hosts #被控端的主机列表文件
#library = /usr/share/my_modules/ #库文件存放目录
#remote_tmp = ~/.ansible/tmp #临时文件远程主机存放目录
#local_tmp = ~/.ansible/tmp #临时文件本地存放目录
#forks = 5 #默认开启的并发数
#poll_interval = 15 #默认轮询时间间隔(单位秒)
#sudo_user = root #默认sudo用户
#ask_sudo_pass = True #是否需要sudo密码
#ask_pass = True #是否需要密码
#transport = smart #传输方式
#remote_port = 22 #默认远程主机的端口号
建议开启修改以下两个配置参数(取消掉注释即可)
#host_key_checking = False #检查对应服务器的host_key
#log_path=/var/log/ansible.log #开启ansible日志
使用ansible --help可以查看到命令参数
这里只写一些常用的参数:
--version #显示版本
-m module #指定使用的模块,默认为command
-v #查看执行的详细过程(-vv、-vvvv更详细)
--list-hosts #显示主机列表(可以简写为--list)
-k,--ask-pass #提示输入ssh连接密码,默认使用key验证
-K,--ask-become-pass #提示执行输入sudo的密码
-C,--check #检查,并不执行
-T,--timeout=TIMEOUT #执行命令的超时时间,默认10s
-u,--user=REMOTE_USER #指定远程执行的执行用户
-b,--become #代替旧版本的sudo切换
-h,--help #显示使用帮助
创建名为/home/student/ansible/inventory的静态清单文件, 以满足以下需求:
node1是dev主机组的成员
node2是test主机组的成员
node3是prod主机组的成员
prod组是webservers主机组的成员
创建为/home/student/ansible/ansible.cfg的配置文件, 以满足以下要求:
主机清单文件为/home/student/ansible/inventory
playbook中使用的角色的位置包括/home/student/ansible/roles
[root@server ~]# vim /etc/sudoers.d/student
[root@server ~]# cat /etc/sudoers.d/student
student ALL=(ALL) NOPASSWD: ALL
[root@server ~]# for i in node{1..3}
> do scp /etc/sudoers.d/student root@$i:/etc/sudoers.d/
> done
root@node1's password:
student 100% 32 28.0KB/s 00:00
root@node2's password:
student 100% 32 48.7KB/s 00:00
root@node3's password:
student 100% 32 51.7KB/s 00:00
[root@server ~]# su - student
[student@server ~]$
[student@server ~]$ cd ansible/
[student@server ansible]$ ls
ansible.cfg inventory
[student@server ansible]$ mkdir roles
[student@server ansible]$ vim inventory
[student@server ansible]$ cat inventory
[dev]
node1
[test]
node2
[prod]
node3
[webserver:children]
prod
[student@server ansible]$ vim ansible.cfg
inventory = /home/student/ansible/inventory
roles_path = /home/student/ansible/roles
host_key_checking = False
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[student@server ansible]$ ansible all -m ping
node3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
node2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}