RHCEansible静态主机清单
创始人
2024-05-04 03:22:09
0

首先要做好免密登录 RHCEansible虚拟机初始化配置,ansible配置和安装_无所不知的神奇海螺的博客-CSDN博客

添加主机组

[root@server ~]# vim /etc/ansible/hosts

或者

 测试

[root@server ~]# ansible node1 -m command -a 'hostname' --- 引号里的是想要受控主机执行的命令

 [root@server ~]# ansible web -a 'hostname'

 或者

[root@server ~]# ansible web --list-hosts

 或者

[root@server ~]# ansible-inventory --graph

 如果要匹配自定义路径的清单文件,在命令中加个 - i + 路径

[root@servera ~]# ansible 'web:ftp' --list-hosts --- 匹配在web组或者在ftp组中的所有主机 hosts (2): servera.openlab.com serverb.openlab.com [root@servera ~]# ansible 'web:mail' --list-hosts --- 匹配在web组或者在mail组中的所有主机 hosts (2): servera.openlab.com serverb.openlab.com [root@servera ~]# ansible 'web:&mail' --list-hosts --- 匹配在web组和mail组中的所有主机 hosts (1): servera.openlab.com [root@servera ~]# ansible 'web:!mail' --list-hosts --- 匹配在web组但是不在mail组中的所有主机 [WARNING]: No hosts matched, nothing to do hosts (0): [root@servera ~]# ansible 'web:!mail:&dns' --list-hosts --- 匹配在web组但是不在mail组中并且在dns组中的所有主机

ansible匹配自定义路径清单文件

查看当前匹配的清单文件路径

[root@server ~]# ansible --version

[root@server ~]# ansible --version
ansible [core 2.13.5]
  config file = /etc/ansible/ansible.cfg --- 默认配置文件
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.14 (main, Dec  5 2022, 13:41:22) [GCC 8.5.0 20210514 (Red Hat 8.5.0-17)]
  jinja version = 3.1.2 --- 版本
  libyaml = True

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

如果当前目录有ansible.cfg文件,则匹配当前目录下的,如果没有则匹配家目录下的,家目录也没有的话则匹配 /etc/ansible/ansible.cfg

执行ansible命令根据所在目录匹配相关ansible配置文件,实践中一般使用ansible命令的目录中创建 ansible.cfg文件,此目录中也将包含任何你的ansible项目使用的文件,有清单或者主机清单。 ANSIBLE_CONFIG(ansible环境变量中指向的配置文件)---->./ansible.cfg ---->~/.ansible.cfg ---->/etc/ansible/ansible.cfg 默认只有一个配置文件生效

管理配置文件中的设置

[root@server ~]# vim ./inventory

[defaults] inventory = ./inventory         #主机列表配置文件 加载自定义路径文件 library = /usr/share/my_modules         #库文件存放目录 forks = 5         #默认并发数5 (同时可以处理5个命令--同时有20个节点主机5个主机执行在 5个执行) sudo_user = root         #默认的sudo用户 root 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匹配自定义路径清单文件

[root@server ~]# cd /home/student/ansible/inventory

[root@server inventory]# touch ansible.cfg

[root@server inventory]# ansible --version
ansible [core 2.13.5]
  config file = /home/student/ansible/inventory/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.14 (main, Dec  5 2022, 13:41:22) [GCC 8.5.0 20210514 (Red Hat 8.5.0-17)]
  jinja version = 3.1.2
  libyaml = True

自定义路径文件案例:

注:在自定义路径下,一定要创建两个文件 --- ansible.cfg 和 inventory

创建一个名为/home/student/ansible/inventory的静态库存文件如下所示:

  2.1)node1 是dev主机组的成员

  2.2)node2是test主机组的成员

  2.3)node1和node2是prod主机组的成员

  2.4)node1是balancers主机组的一员

  2.5)prod组是webservers主机组的成员

[root@server ~]# mkdir /home/student/ansible/inventory -p

[root@server ~]# cd /home/student/ansible/inventory

[root@server inventory]# ansible --version

[root@server inventory]# touch ansible.cfg

[root@server inventory]# vim ansible.cfg

[root@server inventory]# touch inventory

[root@server inventory]# vim inventory

 [root@server inventory]# ansible-inventory --graph

 

ansible "~(web|db).*\.example\.com" -m ping

主机清单格式(交、并、补) \>all 所有主机 \>通配符 ansible "*" -m ping ansible 192.168.60.* -m ping ansible "web*" -m ping \>或 : (并)属于A或属于B的元素的集合A并B AUB ,也表示或者的意思 ansible "websrv:appsrv" -m ping \>与 :& (交集)属于A且属于B ansible 'websrv:&appsrv' -m ping \>非 :! (补集)属于全集U不属于集合A ansible 'websrv:!dbsrv' -m ping (在websrv主但不在dbsrv组) 综合逻辑 ansible 'websrv:dbsrv:&appsrv:!ftsrv' -m ping 正则表达式 ansible "~(web|db).*\.example\.com" -m ping 注: .任意单个字符 "~"开始表示正则匹配 * 匹配前面的子表达式零次或多次 \转义

 题目

 

案例一:ansible使用ssh连接受管主机,一般不建议用管理用户,要求通过普通用户student进行链接

[defaults] inventory = /etc/ansible/hosts remote_user = student  --- 受控主机和控制主机中都必须要有student用户 ask_pass = True

案例二:关闭主机秘钥验证(别远程主机的秘钥验证关闭)

在管控主机中通过指定用户发起操作指令,在受管主机中通过ssh远程连接方式以student用户身份执行, 并验证密码;如果ask_pass为false 则可以通过-k 或者--ask-pass来提示接收密码进行验证。 host_key_checking = False 关闭主机秘钥验证: 或者直接在控制主机的操作系统中设置环境变量, 如下所示: $export ANSIBLE_HOST_KEY_CHECKING=False

案例三:主机免密登陆

如果不需要密码验证(忽略密码验证)则需要配置秘钥验证 ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' -q for host in server{a,b};do ssh-copy-id -i $host ;done

案例四:远程用户sudo提权

如果在受管主机中需要通过管理员身份运行命令则配置sudo vim /etc/sudoers student ALL=(ALL) NOPASSWD: ALL 注:在受管主机中进行配置,建议管理sudo用户提权密码验证,如果没有关闭则ask_sudo_pass = True 来开启执行命令sudo提权密码验证;但是ask_sudo_pass = False那么可以空过-K --ask become-pass来开启执行命令sudo提权密码验证

案例五:特权升级。

在受管主机中通过sudo提权可在ansible配置中进行优化,开启远程用户在受管主机中执行特权升级。 控制主机执行特权命令不需要指定sudo命令
[student@localhost ~]$ ansible web -a 'sudo useradd haha' [WARNING]: Consider using 'become', 'become_method', and 'become_user' rather than running sudo servera | CHANGED | rc=0 >> serverb | CHANGED | rc=0 >> Vim /etc/ansible/ansible.cfg [privilege_escalation] become=True become_method=sudo become_user=root become_ask_pass=False [student@localhost ~]$ ansible web -a 'useradd xixi' servera | CHANGED | rc=0 >> serverb | CHANGED | rc=0 >>
ansible-doc 查找关于本地系统上安装的模块信息==显示模块帮助(ansibleman命令,相当于help)
-l,--lsit 查看控制节点上可用的模块列表以及其功能的概要;列出可用模块 -s,--snippet 列岀某个模块支持的动作 显示模块的playbook ansible-doc [module name] 查看指定模块的概要、选项、详细信息、以及基本用法 模块文档文档网站:http://docs.ansible.com 注意:帮助显示中模块维护标记 由于有些模块可能处于不同的开发阶段查看模块开发状态,是在ansible-doc输出末尾的METEDATA部分 中指明 stableinterface: 模块的关键字稳定,将尽力确保不删除关键字或更改其含义 preview:模块处于阶段预览,可能不稳定 deprecated: 模块弃用 removed:模块已从发行版中移除
主机联通性测试
绿色:执行成功并且不需要做出任何改变 黄色:执行成功并且对目标主机做出变更 红色:执行失败 蓝色:显示详细过程 紫色:显示警告

file模块 ansible-doc file -s
path参数 :必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest参数或 者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或name也可以。 state参数 :Path=“路径” state= touch|directory|link|hard|absent 此参数非常灵活,此参数对应的值需要根据情况设定,比如,当我们需要在远程主机中创建一个目 录的时候,我们需要使用path参数指定对应的目录路径,假设,我想要在远程主机上创 建/testdir/a/b目录,那么我则需要设置path=/testdir/a/b,但是,我们无法从"/testdir/a/b"这个 路径看出b是一个文件还是一个目录,ansible也同样无法单单从一个字符串就知道你要创建文件还 是目录,所以,我们需要通过state参数进行说明 src参数 :当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,我们必须 指明软链或硬链链接的哪个文件,通过src参数即可指定链接源。 force参数 : 当state=link的时候,可配合此参数强制创建链接文件,当force=yes时,表示强制创 建链接文件,不过强制创建链接文件分为两种情况,情况一:当你要创建的链接文件指向的源文件 并不存在时,使用此参数,可以先强制创建出链接文件。情况二:当你要创建链接文件的目录中已 经存在与链接文件同名的文件时,将force设置为yes,回将同名文件覆盖为链接文件,相当于删除 在远程主机上执行脚本 [root@centos7 ~]# ansible test -m script -a "test.sh chdir=/tmp" 172.20.21.120 | SUCCESS => { "changed": true, "rc": 0, "stderr": "Shared connection to 172.20.21.120 closed.\r\n", "stdout": "/tmp\r\n", "stdout_lines": [ "/tmp" ] } [root@centos7 ~]# ansible test -m raw -a "pwd" 172.20.21.120 | SUCCESS | rc=0 >> /root Shared connection to 172.20.21.120 closed.同名文件,创建链接文件。情况三:当你要创建链接文件的目录中已经存在与链接文件同名的文 件,并且链接文件指向的源文件也不存在,这时会强制替换同名文件为链接文件。 owner参数 :用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则会报 错。 group参数 :用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。 mode参数:用于指定被操作文件的权限,比如,如果想要将文件权限设置为"rw-r-x---",则可以 使用mode=650进行设置,或者使用mode=0650,效果也是相同的,如果你想要设置特殊权限, 比如为二进制文件设置suid,则可以使用mode=4700,很方便吧。 recurse参数:当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属 性。 -R setype: httpd_content_t

相关内容

热门资讯

安卓系统自带的网页,功能与特色... 你有没有发现,每次打开安卓手机,那熟悉的系统界面里总有一个默默无闻的小家伙——安卓系统自带的网页浏览...
美咖云系统安卓版,开启智能生活... 你有没有发现,最近手机上多了一个叫“美咖云系统安卓版”的小家伙?它就像一个魔法师,轻轻一点,就能让你...
安卓系统推荐最好的手机,盘点性... 你有没有想过,拥有一部性能卓越的手机,就像是拥有了移动的宝藏库?在这个信息爆炸的时代,一部好手机不仅...
安卓11系统能精简吗,释放潜能 你有没有发现,随着手机越来越智能,系统也越来越庞大?安卓11系统,这个最新的操作系统,是不是也让你觉...
安卓自动重启系统软件,揭秘原因... 手机突然自动重启,是不是感觉整个人都不好了?别急,今天就来和你聊聊这个让人头疼的安卓自动重启系统软件...
苹果手机x刷安卓系统,探索安卓... 你有没有想过,你的苹果手机X竟然也能刷上安卓系统?是的,你没听错,就是那个一直以来都和我们苹果手机X...
安卓系统智商低吗,智商低下的真... 你有没有想过,为什么安卓系统的智商总被调侃得好像有点低呢?是不是觉得它总是慢吞吞的,有时候还犯点小错...
安卓系统手机联系人,揭秘你的社... 你有没有发现,手机里的联系人列表就像是一个小小的社交圈呢?里面藏着我们的亲朋好友、工作伙伴,甚至还有...
安卓系统免费铃声下载,打造个性... 手机里那首老掉牙的铃声是不是让你觉得有点out了呢?别急,今天就来给你支个招,让你轻松给安卓手机换上...
安卓系统用哪个桌面好,打造个性... 你有没有发现,手机桌面可是我们每天都要面对的“脸面”呢?换一个好看的桌面,心情都能跟着好起来。那么,...
虚拟大师是安卓10系统,功能与... 你知道吗?最近在手机圈里,有个新玩意儿引起了不小的轰动,那就是虚拟大师!而且,更让人惊喜的是,这个虚...
安卓系统与苹果优缺点,系统优缺... 说到手机操作系统,安卓和苹果绝对是两大巨头,它们各有各的特色,就像两道不同的美味佳肴,让人难以抉择。...
安卓win双系统主板,融合与创... 你有没有想过,一台电脑如果既能流畅运行安卓系统,又能轻松驾驭Windows系统,那该有多爽啊?没错,...
安卓系统可精简软件,轻松提升手... 你有没有发现,手机里的安卓系统越来越庞大,软件也越装越多,有时候感觉手机就像个“大肚子”,不仅运行速...
安卓系统基于linux的代码,... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,其实背后有着一套复杂的基于Linux的代...
苹果和安卓的拍照系统,谁更胜一... 你有没有发现,现在手机拍照已经成为我们生活中不可或缺的一部分呢?无论是记录生活的点滴,还是捕捉美丽的...
苹果和安卓系统不同吗,系统差异... 你有没有想过,为什么你的手机里装的是苹果的iOS系统,而朋友的手机却是安卓系统呢?这两种系统,看似都...
安卓系统有多少级,揭秘其多级架... 你有没有想过,那个陪伴我们日常生活的安卓系统,它其实有着丰富的层级结构呢?没错,就是那个让我们的手机...
华为鸿蒙系统与安卓的,技术融合... 你知道吗?最近科技圈可是炸开了锅,华为鸿蒙系统与安卓的较量成为了大家热议的话题。这不,今天我就来给你...
什么安卓手机是苹果系统,搭载苹... 你有没有想过,为什么有些人宁愿花大价钱买苹果手机,而有些人却对安卓手机情有独钟呢?其实,这个问题背后...