ansible配置文件介绍

ansible主目录结构

/etc/ansible有以下三个文件或者目录生成
1、Hosts
主机清单配置文件
2、ansible.cfg
Ansible配置文件
3、Roles
角色定义目录

ansible配置文件优先级

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解析

[root@ansible ~]# vim /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配置文件的常用参数一般位于[defaults]模块下,主要有以下几个参数:

inventory
定义了Ansible默认的主机配置文件,默认为/etc/ansible/hosts
library
定义了Ansible默认搜寻模块的位置,默认为/etc/ansible/my_modules/目录
remote_tmp
定义了Ansible远程执行临时文件
pattern
定义了Ansible通信的主机,该参数默认为*,表示与所有主机进行通信
forks
定义了Ansible的并行进程数,默认为5
poll_interval
定义了回频率或轮询间隔时间
gathering
控制facts信息的收集
roles_path
用于搜索Ansible中的roles
host_key_checking
用于检查主机密钥
sudo_exe
用于指定sudo远程执行命令
sudo_flags
用于传递sudo以外的参数
timeout
用于设置SSH超时时间
remote_user
用于设置远程登录用户名
log_path
module_name
用于指定Ansible在默认情况下的执行模块,默认为command
executable
用于指定Ansible执行的shell环境
hash_behavior
用于指定特定的优先级覆盖变量
jinjia2_extensions
设置允许开启jinjia2拓展模块
private_key_file
用于指定私钥文件存储位置
display_skipped_hosts
用于显示任何跳过任务的状态
system_warnings
用于禁用系统显示ansible潜在问题警告
deprecation_warnings
playbook输出禁用“不建议使用”警告
command_warnings
command模块Ansible默认发出警告
pipelining
用于开启pipe SSH通道优化
sudo_user
定义了sudo远程执行用户名
ask_sudo_pass
定义了使用sudo是否需要输入密码
ask_pass
定义了是否需要输入密码
transport
定义了Ansible的通信机制
remote_port
定义了Ansible的通信端口,默认为22
module_lang
定义了Ansible模块和系统之间通信的语言

主机清单

清单定义ansible将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。
可以通过两种方式定义主机清单。静态主机清单可以通过文本文件来定义。动态主机清单可以根据需要使用外部信息提供程序通过脚本或者其他程序来生成。
例如:

vim /etc/ansible/hosts
web1.example.com
web2.example.com
172.16.30.200

[webservers]
web1.example.com
web2.example.com

[db-servers]
db1.example.com
db2.example.com

[all:children]
webservers
db-servers


cd /etc/ansible
查看所有的受控主机
ansible all -i hosts --list-hosts

查看某组中包含哪些受控主机
ansible server1 -i hosts --list-hosts

对普通用户提权,所有受管节点都配置

[root@ansible ~]# cd /etc/sudoers.d/
[root@ansible sudoers.d]# vim student
student  ALL=(ALL)  NOPASSWD: ALL
[root@ansible sudoers.d]# for i in node{1..3} 
> do scp  student root@$i:/etc/sudoers.d/
> done

配置普通用户的配置文件

inventory = /etc/ansible/hosts #主机列表配置文件 
remote_user = student ----远程用户,受控主机使用什么用户进行执行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

拓展

安装和配置Ansible
按照下方所述,在控制节点ansible.example.com 上安装和配置Ansible:
安装所需的软件包
创建名为/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@ansible ~]# su - student 
[student@ansible ~]$ ls
ansible
[student@ansible ~]$ cd ansible/
[student@ansible ansible]$ cp /etc/ansible/ansible.cfg .
[student@ansible ansible]$ ls
ansible.cfg  inventory
[student@ansible ansible]$ vim inventory 
[student@ansible ansible]$ cat inventory 
[dev]
node1
[test]
node2
[prod]
node3
[webservers:children]
prod

[student@ansible ansible]$ vim ansible.cfg 
inventory = /etc/ansible/hosts #主机列表配置文件 
remote_user = student ----远程用户,受控主机使用什么用户进行执行ansible任务
roles_path    = /home/student/ansible/roles
host_key_checking = False

[privilege_escalation]  定义对受管主机执行特权升级,默认普通用户是没有权限来执行很多ansible任务的,但是我们可以给普通用户提权,让它有权限去执行ansible任务
become = true
become_method = sudo
become_user = root
become_ask_pass = false
[student@ansible ansible]$ mkdir roles
[student@ansible ansible]$ ls
ansible.cfg  inventory  roles
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值