#ansible 配置
文章目录
##/etc/ansible目录
1、Hosts
主机清单配置文件
2、ansible.cfg
Ansible配置文件
3、Roles
角色定义目录
##配置文件优先级
Ansible配置以ini格式存储配置数据,在Ansible中⼏乎所有配置都可以通过Ansible的Playbook或环境变量来重新赋值。在运⾏Ansible命令时,命令将会按照以下顺序查找配置⽂件。
ANSIBLE_CONFIG :⾸先,Ansible命令会检查环境变量,及这个环境变量指向的配置⽂件。 export ANSIBLE_CONFIG=/PATH
./ansible.cfg :其次,将会检查当前⽬录下的ansible.cfg配置⽂件
~/.ansible.cfg :再次,将会检查当前⽤户home⽬录下的.ansible.cfg配置⽂件。
/etc/ansible/ansible.cfg :最后,将会检查在⽤软件包管理⼯具安装Ansible时⾃动产⽣的配置⽂件。
##主配置文件/etc/ansible/ansible.cfg解析
[defaults] 默认配置
some basic default values…
inventory = /etc/ansible/hosts 主机列表配置文件
library = /usr/share/my_modules/ #库文件存放目录,ansible默认搜寻模块的位置
module_utils = /usr/share/my_module_utils/ #模块存放目录
remote_tmp = ~/.ansible/tmp #临时py命令文件存放在远程主机目录
local_tmp = ~/.ansible/tmp #本机的临时命令执行目录
forks = 5 #默认并发数
poll_interval = 15 #时间间隔
sudo_user = root #默认sudo用户
ask_sudo_pass = True #每次执行ansible命令是否询问sudo用户密码,默认值为no
ask_pass = True #每次执行ansible命令是否询问ssh密码,默认值为no
transport = smart #传输方式
remote_port = 22 #远程端口号
remote_user = root ----远程用户,受控主机使用什么用户进行执行ansible任务
roles_path = /etc/ansible/roles
host_key_checking = False
[privilege_escalation] 定义对受管主机执行特权升级,默认普通用户是没有权限来执行很多ansible任务的,但是我们可以给普通用户提权,让它有权限去执行ansible任务
become = true
become_method = sudo
become_user = root
become_ask_pass = false
[paramiko_connection]、[ssh_connection]、[accelerate]用于优化与受管主机的连接
[selinux] 定义如何配置selinux交互
#安装和配置Ansible实操
提权
[root@server ~]# vim /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
student 100% 31 22.3KB/s 00:00
student 100% 31 24.6KB/s 00:00
student 100% 31 29.6KB/s 00:00
##创建student的主配置文件
[student@server ~]$ mkdir ansible
[student@server ~]$ cd ansible/
[student@server ansible]$ cp /etc/ansible/ansible.cfg .
##创建清单配置文件
[student@server ~]$ touch /home/student/ansible/inventory
[student@server ~]$ vim /home/student/ansible/inventory
[student@server ~]$ cat /home/student/ansible/inventory
[dev]
node1
[test]
node2
[prod]
node3
[webservers:children]
prod
##配置ansible.cfg
[student@server ansible]$ mkdir roles
[student@server ansible]$ vim ansible.cfg
···
inventory = /home/student/ansible/inventory 取消注释修改
romete_user = student 添加
···
oles_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
node2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
node3 | 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"
}