第二章、Ansible常用配置文件介绍

第二章、Ansible常用配置文件介绍

文章目录

一、配置文件中主目录介绍

/etc/ansible有以下三个文件或者目录生成

[root@server ~]# cd /etc/ansible/
[root@server ansible]# ls
ansible.cfg  hosts  roles

1、Hosts 主机清单配置文件(定义的受控主机IP,也可以自己自定义)

2、ansible.cfg Ansible配置文件

3、Roles 角色定义目录(分为系统角色和自定义角色)

这里是默认没有的

[root@server ansible]# cd roles/
[root@server roles]# ls
[root@server roles]#

需要安装 rhel-system-role 才会生成系统角色,可以直接写入剧本生成调用模块

二、ansible配置文件优先级

Ansible配置以ini格式存储配置数据,在Ansible中⼏乎所有配置都可以通过Ansible的Playbook或环境变量(export)来重新赋值。在运⾏Ansible命令时,命令将会按照以下顺序查找配置⽂件。

匹配原理的话就是只要是在当前目录下有.ansible文件才会默认按优先级来匹配

1、ANSIBLE_CONFIG :⾸先,Ansible命令会检查环境变量,及这个环境变量指向的配置⽂件。即通过ANSIBLE_CONFIG环境变量定义配置文件的位置。定义了此变量时,Ansible将使用变量所指定的配置文件,而不用上面提到的任何配置文件。
Export(设于值) ANSIBLE_CONFIG(系统自带变量)=/PATH(指定的路径)

2、./ansible.cfg (当前目录下的创建的文件):其次,将会检查当前⽬录下的ansible.cfg配置⽂件
3、~/.ansible.cfg (指定当前用户家目录下的配置文件):再次,将会检查当前⽤户home⽬录下的.ansible.cfg配置⽂件。

除去用export做的变量后,其他都会做的变量都需要在当前目录下(也就是2~3的地方),不然则只匹配以/etc/开头的
4、/etc/ansible/ansible.cfg :最后,将会检查在⽤软件包管理⼯具安装Ansible时⾃动产⽣的配置⽂件。

ANSIBLE_CONFIG环境变量指定的任何文件将覆盖所有其他配置文件。如果没有设置该变量,则接下来检查运行ansible命令的目录中是否有ansible.cfg文件。如果不存在该文件,则检查用户的家目录是否有.ansible.cfg文件。只有在找不到其他配置文件时,才使用全局/etc/ansible/ansible.cfg文件。如果/etc/ansible/ansible.cfg配置文件不存在,Ansible包含它使用的默认值。
由于Ansible配置文件可以放入的位置有多种,因此Ansible当前使用哪一个配置文件可能会令人困惑。我们可以运行以下命令来清楚地确认所安装的Ansible版本以及正在使用的配置文件。

ansible --version

三、主配置文件/etc/ansible/ansible.cfg解析

[root@ansible ~]# vim /etc/ansible/ansible.cfg :340

[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交互

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y9YflT3n-1666363004398)(./1666361910278.png)]

四、主机清单

清单定义ansible将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。

在[defaults]部分中,inventory指令可以直接指向某一静态清单文件,或者指向含有多个静态清单文件和动态清单脚本的某一目录。

可以通过两种方式定义主机清单。静态主机清单可以通过文本文件来定义。动态主机清单可以根据需要使用外部信息提供程序通过脚本或者其他程序来生成。

基于模块测试会产生的变化

1、紫色处于警告信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hu9Ziybj-1666363004400)(./1666361844142.png)]

2、绿色代表执行成功,但受控节点没有发生任何变化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yZnixyIW-1666363004401)(./1666361849059.png)]

3、黄色代表执行成功,受控节点发生了变化

4、红色代表发生错误,需要进行拒绝,并会提供相对应的解决日志
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lr1Sk0oa-1666363004401)(./1666361853211.png)]

五、静态清单小测试

//题目
创建名为/home/student/ansible/inventory的静态清单文件, 以满足以下需求:

node1是dev主机组的成员
node2是test主机组的成员
node3是prod主机组的成员
prod组是webservers主机组的成员

//保证使用清单测试时候不需要输入密码
[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%   36    13.5KB/s   00:00    
student                                              100%   36    15.2KB/s   00:00    
student                                              100%   36    16.8KB/s   00:00    
[root@server ~]# ssh student@localhost
student@localhost's password: 
Last login: Fri Oct 21 20:46:57 2022 from ::1
[root@server ~]# for i in node{1..3}; do scp /etc/sudoers.d/student root@$i:/etc/sudoers.d/; done
redhat

5.1 建立工作目录

[student@localhost ~]$ mkdir /home/student/ansible/roles -p
[student@localhost ~]$ cd /home/student/ansible
[student@localhost ~/ansible]$ ls
ansible.cfg  inventory  roles
//按照题目定义清单

5.2 编辑/home/student/ansible/inventory文件

[student@server ansible]$ vim /home/student/ansible/inventory
[dev]
node1

[dev2]
node2

[prod]
node3

[webservers:children]
prod

3.3 编辑/home/student/ansible/ansible.cfg

[student@localhost ~/ansible]$ cp /etc/ansible/ansible.cfg /home/student/ansible/ansible.cfg
[student@server ansible]$ vim /home/student/ansible/ansible.cfg	
## 14行
inventory       = /home/student/ansible/inventory
## 69行
roles_path    = /home/student/ansible/roles
## 73行
host_key_checking = False
## 110行
remote_user = student
## 344行
[privilege_escalation]
become=True  #开启提权
become_method=sudo
become_user=root
become_ask_pass=False #提权后不需要密码

//访问测试

[student@server ansible]$ ansible all -m ping
node1 | 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"
}
node2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值