【ansible】ansible配置文件详解

这篇具有很好参考价值的文章主要介绍了【ansible】ansible配置文件详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

管理ansible的配置文件

一,配置ansible

二,据优先级选择执行ansible配置文件

1,按照优先级首先会匹配环境变量ANSIBLE_CONFIG

 2,第二个匹配到./ansible.cfg文件 

3,第三个匹配到~/.ansible.cfg文件

4,当以上文件都不存在时,ansible配置文件就会匹配到/etc/ansible/ansible.cfg

三,管理配置文件中的设置

案例一:

ansible使用ssh连接受管主机

案例二:

关闭主机秘钥验证

案例三:

主机免密登陆,关闭秘钥

案例四:

远程用户sudo提权

案例五:

特权升级


管理ansible的配置文件

一,配置ansible

 通过修改ansible配置文件中的设置来定义ansible安装行为。通过控制节点上多个可能位置之一选择相应位置的配置文件。

 

二,据优先级选择执行ansible配置文件

 执行ansible命令根据所在目录匹配相关ansible配置文件,实践中一般使用ansible命令的目录中创建ansible.cfg文件,此目录中也将包含任何你的ansible项目使用的文件,有清单或者主机清单。

ANSIBLE_CONFIG(ansible环境变量中指向的配置文件)---->./ansible.cfg ---->~/.ansible.cfg ----> /etc/ansible/ansible.conf

  

查看当前使用的是哪个ansible.cfg配置文件,

[root@server ~]# ansible --version

ansible输入设置,RHCE,linux,运维,服务器

 

 

1,按照优先级首先会匹配环境变量ANSIBLE_CONFIG

 此时的环境变量为空

[student1@server ~]$ echo ANSIBLE_CONFIG

ansible输入设置,RHCE,linux,运维,服务器

  

(1)我们定义环境变量ANSIBLE_CONFIG =  /test/ansible.cfg;定义环境变量需要用export导出

[student1@server ~]$ export ANSIBLE_CONFIG=/test/ansible.cfg

ansible输入设置,RHCE,linux,运维,服务器

 

(2)定义的环境变量有值且对应的文件存在,若匹配到的文件不存在,则按照优先级往下匹配;因为上述操作只是定义了环境变量,但是赋予环境变量的值的文件并不存在,所以匹配到的ansible配置文件为/etc/ansible/ansible.cfg

[student1@server ~]$ ansible --version

ansible输入设置,RHCE,linux,运维,服务器

(3) 给/test授予777的权限

[root@server ~]# chmod 777 /test

ansible输入设置,RHCE,linux,运维,服务器

 

(4)用studnt1用户创建/test/ansible.cfg文件

[student1@server ~]$ touch /test/ansible.cfg

ansible输入设置,RHCE,linux,运维,服务器

 

 

(5)环境变量定义成功,且变量指定的文件存在,则ansible按照优先级匹配到的配置文件为/test/ansible.cfg

[student1@server ~]$ ansible --version

ansible输入设置,RHCE,linux,运维,服务器

 

 

(6)取消变量名,可以重新连接或者使用取消命令

[student1@server ~]$ unset ANSIBLE_CONFIG

ansible输入设置,RHCE,linux,运维,服务器

 

在命令行定义的环境变量临时有效,重启后失效,永久有效可以在/etc/bashrc文件中配置

 

 

 

 2,第二个匹配到./ansible.cfg文件 

(1) 给根目录777的权限

[root@server ~]# chmod 777 /

ansible输入设置,RHCE,linux,运维,服务器

(2)创建一个目录/pub,切换到/pub目录下创建/ansible.cfg文件

[student1@server ~]$ mkdir /pub

[student1@server ~]$ cd /pub

[student1@server pub]$ touch /pub/ansible.cfg

ansible输入设置,RHCE,linux,运维,服务器

 

(3)此时查看匹配到的ansible配置文件,发现匹配到的ansible配置文件为当前目录下的/ansible.cfg文件

[student1@server pub]$ ansible --version

ansible输入设置,RHCE,linux,运维,服务器

 

 

 

3,第三个匹配到~/.ansible.cfg文件

(1)在家目录下创建隐藏文件 ansible.cfg

[student1@server ~]$ touch .ansible.cfg

ansible输入设置,RHCE,linux,运维,服务器

 

(2)此时查看匹配到的ansible配置文件,发现发现匹配到的ansible配置文件为 /home/student1/.ansible.cfg文件

[student1@server ~]$ ansible --version

ansible输入设置,RHCE,linux,运维,服务器

 

 

 

4,当以上文件都不存在时,ansible配置文件就会匹配到/etc/ansible/ansible.cfg

[student1@server ~]$ ansible --version

ansible输入设置,RHCE,linux,运维,服务器

 

 

 

 

 

 

三,管理配置文件中的设置

1,打开配置文件

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

ansible输入设置,RHCE,linux,运维,服务器

#               $ ansible-config init --disabled > ansible.cfg

初始化相应的配置参数,并把参数写入到ansible.cfg文件,不生效,以注释显示

#表示注释,解释      ;表示参数

ansible输入设置,RHCE,linux,运维,服务器

 

 

 

2,初始化文件,使用追加符号使其产生的配置文件追加在原有文件后面

[root@server ~]# ansible-config init --disabled >> /etc/ansible/ansible.cfg

ansible输入设置,RHCE,linux,运维,服务器

 

 

3,配置文件由几部分组成,每部分含有以键值对形式定义的设置。部分的标题一方括号括起。重点需要了解以下两部分:

[defaults]

inventory = ./inventory                          #主机列表配置文件

library = /usr/share/my_modules                #库文件存放目录

forks = 5             #默认并发数5 (同时可以处理5个命令--同时有20个节点主机5个主机执行在5个执行)

sudo_user = root                              #默认的sudo用户 root

#ask_sudo_pass = True                      # ansible 2.8版本取消

ask_pass = false                                 #每次执行ansible命令是否询问ssh密码

remout_port = 22                             #  受控主机的端口   

host_key_checking = False              #检查对应服务器的host_key,建议取消注释

log_path = /var/log/ansible.log      #ansible日志文件

module_name = command             #默认模块,可以改为shell

remote_user = user        #要在受管主机上登录的用户名称,没有指定则是当前用户(受管、管控、托管主机的用户名)

remote_tmp = ~/.ansible/tmp ;临时的py命令文件存放在远程主机目录

[privilege_escalation]     ;特权升级

become = true             #连接后是否在受管主机上切换用户,默认会切换到root下

become_method = sudo     #如何切换用户

become_user = root         #受管主机切换到的用户

become_ask_pass = false     #是否为become_method提示输入密码,默认为false

案例一:

ansible使用ssh连接受管主机

一般不建议用管理用户,要求通过普通用户student1进行链接

 

1,在工具栏选择发送键输到所有会话

ansible输入设置,RHCE,linux,运维,服务器

 

2,在控制端主机server创建student1用户并设置密码,受控端node1node2也会自动创建相应的student用户和密码

控制端主机server

[root@server ~]# useradd student1
[root@server ~]# id student1
[root@server ~]# passwd student1

ansible输入设置,RHCE,linux,运维,服务器

 受控端主机node1

[root@node1 .ssh]# useradd student1
[root@node1 .ssh]# id student1
[root@node1 .ssh]# passwd student1

ansible输入设置,RHCE,linux,运维,服务器

 

受控端主机node2

[root@node2 .ssh]# useradd student1
[root@node2 .ssh]# id student1
[root@node2 .ssh]# passwd student1

ansible输入设置,RHCE,linux,运维,服务器

 

  给student用户配置密码

[root@server ~]# passwd student

ansible输入设置,RHCE,linux,运维,服务器

ansible输入设置,RHCE,linux,运维,服务器

ansible输入设置,RHCE,linux,运维,服务器

 

3,在工具栏选择发送键输到当前会话,取消发送所有会话

ansible输入设置,RHCE,linux,运维,服务器

 

 

4,在控制端主机server打开配置文件/etc/ansible/ansible.cfg进行下列配置

[defaults]

#指定自定义主机清单文件

inventory = /test/inventory

#每次指向ansible命令需要询问ssh密码

ask_pass = True 

ansible输入设置,RHCE,linux,运维,服务器

5,在控制端主机server的普通用户student1使用ssh连接受控端主机node1的普通用户student1,此时需要进行秘钥验证和密码验证

[student1@server ~]$ ssh node1

ansible输入设置,RHCE,linux,运维,服务器

案例二:

关闭主机秘钥验证

在管控主机中通过指定用户发起操作指令,在受管主机中通过ssh远程连接方式以student1用户身份执行,并验证密码;如果ask_pass为false 则可以通过-k  或者--ask-pass来提示接收密码进行验证。

1,在控制端主机server打开配置文件/etc/ansible/ansible.cfg进行下列配置

[defaults]

#指定自定义主机清单文件

inventory = /test/inventory

#每次指向ansible命令需要询问ssh密码

ask_pass = True         

#不需要验证主机秘钥

host_key_checking = False

ansible输入设置,RHCE,linux,运维,服务器

2,控制端主机server的普通用户student1使用ssh远程连接到受控端主机node1的普通用户student,且不需要秘钥,只需要输入密码即可。

[student1@server ~]$ ssh node1

ansible输入设置,RHCE,linux,运维,服务器

如果ask_pass为false 则可以通过-k  或者--ask-pass来提示接收密码进行验证。

案例三:

主机免密登陆,关闭秘钥

如果不需要密码验证(忽略密码验证)则需要配置秘钥验证

1,在控制端主机server上的普通用户student1上产生公钥

[student1@server ~]$ ssh-keygen -t rsa -P '' -q -f ~/.ssh/id_rsa

-t   指定产生的秘钥类型为rsa类型

-P   ' ' 指定设置的私钥密码为空

-q    静默方式产生秘钥

-f     指定存储秘钥的文件的位置

ansible输入设置,RHCE,linux,运维,服务器

2,将公钥发送到受控端node1与node2上

[student1@server ~]$ for host in node{1..2}; do ssh-copy-id -i $host; done

ansible输入设置,RHCE,linux,运维,服务器

ansible输入设置,RHCE,linux,运维,服务器

3,在控制端主机server打开配置文件/etc/ansible/ansible.cfg进行下列配置

[defaults]

#指定自定义主机清单文件

inventory = /test/inventory

#每次指向ansible命令不需要询问ssh密码

ask_pass = False         

#不需要验证主机秘钥

host_key_checking = False

ansible输入设置,RHCE,linux,运维,服务器

4,控制端主机server的普通用户student1免密登录到受控端主机node1与node2上的普通用户student1,既不需要密码验证,也不需要秘钥验证

[student1@server ~]$ ssh node1

ansible输入设置,RHCE,linux,运维,服务器

[student1@server ~]$ ssh node2

ansible输入设置,RHCE,linux,运维,服务器

案例四:

远程用户sudo提权

1,在受控端主机node1与node2的/etc/sudoers文件中以root身份对student1用户提权,即特权下发,给wheel组的所有用户免密使用特权的权利

%wheel  ALL=(ALL)       NOPASSWD:ALL

ansible输入设置,RHCE,linux,运维,服务器

 

2,在受控端主机node1与node2把student1加入到wheel组中

[root@node1 ~]# gpasswd -a student1 wheel

ansible输入设置,RHCE,linux,运维,服务器

[root@node2 ~]# gpasswd -a student1 wheel

ansible输入设置,RHCE,linux,运维,服务器

 

 

3,此时的dns组下有node1与node2用户组

[student1@server ~]$ ansible-inventory dns --graph

ansible输入设置,RHCE,linux,运维,服务器

 

4,没配置特权前需要使用sudo命令执行特权操作,不使用sudo指令会报错

[student1@server ~]$ ansible dns -m command -a 'useradd xiao1'

node2 | FAILED | rc=1 >>

useradd: Permission denied.

useradd: cannot lock /etc/passwd; try again later.non-zero return code

node1 | FAILED | rc=1 >>

useradd: Permission denied.

useradd: cannot lock /etc/passwd; try again later.non-zero return code

ansible输入设置,RHCE,linux,运维,服务器

 

5,在控制端server以普通用户student1身份使用sudo命令来执行特权为node1node2添加一个新用户xiao1

[student1@server ~]$ ansible dns -m command -a 'sudo useradd xiao1'

ansible输入设置,RHCE,linux,运维,服务器

 

6,在受控端node1node2查看用户xiao1是否添加成功

ansible输入设置,RHCE,linux,运维,服务器

ansible输入设置,RHCE,linux,运维,服务器

 

 

 

 

案例五:

特权升级

在受控主机中通过sudo提权可在ansible配置中进行优化,开启远程用户在受管主机中执行特权升级。控制主机执行特权命令不需要指定sudo命令

 

1,基于案例四的基础上,进行下列配置

 在控制端server的/etc/ansible/ansible.cfg文件中配置特权升级

[privilege_escalation]     ;特权升级

become = true             #是否开启特权升级

become_method = sudo     #特权升级的模式为

become_user = root         #特权升级的用户为

become_ask_pass = false     #是否为become_method提示输入密码,默认为false,因为在受控端的/etc/sudoers文件中配置了免密;若没配置,此处改为True 

ansible输入设置,RHCE,linux,运维,服务器

 

2,此时控制端server可以不加sudo命令来执行特权

[student1@server ~]$ ansible dns -m command -a 'useradd xiao2'

ansible输入设置,RHCE,linux,运维,服务器

 

3,在受控端node1node2查看用户xiao2是否添加成功

ansible输入设置,RHCE,linux,运维,服务器

ansible输入设置,RHCE,linux,运维,服务器

 

 

注:在受管主机中进行配置,建议管理sudo用户提权密码验证,如果没有则关闭ask_sudo_pass = True 来开启执行命令sudo提权密码验证;但是ask_sudo_pass = False那么可以空过-K    --ask-become-pass来开启执行命令sudo提权密码验证

查看详细信息,默认最多可以加4V文章来源地址https://www.toymoban.com/news/detail-765866.html

到了这里,关于【ansible】ansible配置文件详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Linux:ansible自动化运维工具

    Linux:ansible自动化运维工具

    当前所有执行权限我是在root下执行的,如果提示权限之类的,可以在每句命令前  加上 sudo     ansible主服务器  192.168.0.194         另外两个客户端分别为 192.168.0.193   192.168.0.192 软件只需要在主服务器上安装,客户端不需要去安装软件,因为他们相互使用的是ssh 只需要

    2024年02月11日
    浏览(10)
  • [自动化运维工具] Ansible的简单介绍与常用模块详解

    [自动化运维工具] Ansible的简单介绍与常用模块详解

    自动化运维工具,也叫 机器管理工具 。 可以实现 批量管理多台(成百上千)主机 ,是应用级别的 跨主机编排工具 。 无客户端agent存在,不需要在被控制的节点上安装额外的客户端应用 通过 ssh协议 与被控制节点通信 基于模块工作的,可以通过模块实现在被控制节点上执

    2024年02月05日
    浏览(34)
  • Linux6.2 ansible 自动化运维工具(机器管理工具)

    Linux6.2 ansible 自动化运维工具(机器管理工具)

    第一章 LINUX ansible 自动化运维工具(机器管理工具) 一、概述 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现 Ansible能批量配置、部署、管理

    2024年02月14日
    浏览(34)
  • linux高级篇基础理论十二( 自动化运维工具Ansible )

    linux高级篇基础理论十二( 自动化运维工具Ansible )

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️ 感谢CSDN让你我相遇

    2024年01月20日
    浏览(30)
  • Ansible file文件模块 设置文件的属性,比如创建文件、创建链接文件、删除文件

    Ansible file文件模块 设置文件的属性,比如创建文件、创建链接文件、删除文件

    这就是创建目录成功之后的回显 可以看到,已经打印出目录app 执行成功 的 正确输出 查看目录结构已经 删除 目录 app force #需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的

    2024年02月20日
    浏览(31)
  • 01_什么是ansible、基本架构、ansible工作机制、Ansible安装、配置主机清单、设置SSH无密码登录等

    01_什么是ansible、基本架构、ansible工作机制、Ansible安装、配置主机清单、设置SSH无密码登录等

    1.什么是ansible 1.1.基本介绍 1.2.基本架构 1.3.基本特征 1.4.优点 1.5.ansible工作机制 2.Ansible安装 2.1.机器准备 2.2.安装ansible 2.2.1.安装epel源 2.2.2.安装ansible 2.2.3.查看ansible版本 2.2.4.树状结构展示文件夹 2.2.4.1.其中ansible.cfg的内容如下 2.2.4.2.host的默认内容是 2.3.配置主机清单 2.4.设置

    2024年02月14日
    浏览(44)
  • Ansible Playbook剧本配置文件

    Ansible Playbook剧本配置文件

    目录 一、执行文件 修改hosts文件 Playbook的核心元素包含: 用法 实验案例 1.语法检查 2.预测试 3.列出主机 4.列出任务 5.列出标签 6.进行测试 7.测试查看 二、触发器 handlers触发器的实验实例如下 预执行 执行 查看结果 三、角色 /etc/ansible/roles/为角色集合,该目录下有自定义的各

    2024年02月16日
    浏览(11)
  • nohup 输出到指定文件 Linux nohup 实现命令后台运行并输出或记录到指定日志文件 设置日志结果文件名称 重定向到某个文件 标准误 标准错误输出定向 输入报错信息保留

    # yourcommand:启动对象命令。可以跟该命令需要的各种参数。 # 是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出. nohup与结合起来,可以实现不挂断的后台运行。 实现屏幕输出记录到日志文件 # 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standa

    2024年02月05日
    浏览(9)
  • ansible 修改远程主机nginx配置文件

    ansible 修改远程主机nginx配置文件

    设置秘钥   ansible添加主机 ansible测试一下 ping功能 sudo ansible 192.168.1.10 -m ping   测试传送文件到B机 整体目标: 在本机修改好nginx配置文件,并批量更新到目标主机。 分解目标是 1.拷贝文件   2. 重启服务    给所有的目标主机的nginx的配置文件末尾都添加如下: 在ansible的主

    2024年02月12日
    浏览(27)
  • 利用Ansible实现批量Linux服务器安全配置

    利用Ansible实现批量Linux服务器安全配置

    1.摘要 在上一篇初步利用Ansible实现批量服务器自动化管理文章中, 我初步实现了通过编写清单和剧本来实现多台服务器的自动化管理,在本章节中, 我将利用Ansible的剧本来实现更实用、更复杂一点的功能, 主要功能包括三个:1.同时在三台服务器中增加IP访问控制,只允许192.168.2

    2024年01月20日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包