首先要做好免密登录 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

RHCEansible静态主机清单相关推荐

  1. 7.1 Ansible 动态获取主机清单

    场景 在实际工作环境中,较大的企业通常有内部的CMDB管理系统,每个部门基本也都有开发自己的运管系统之类,比如最基础的本部门有哪些机器,它们都是什么配置,基本都是通过运管系统管理.这套内部系统可能已经 ...

  2. Ansible 五(inventory文件 主机清单)

    Ansible 五(inventory文件  主机清单) Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansib ...

  3. Ansible主机清单inventory

    前言 关于Ansible是什么,我在之前的文章中没有说:当然了,我这里也不会说.当你看到我写的这篇文章时,我想你已经知道了Ansible是什么了,如果您还不知道什么是Ansible是什么,那我的建议是 ...

  4. 如何编写yaml格式的Ansible主机清单(inventory)及清单变量使用Demo

    写在前面 嗯,学习Ansible高级特性,整理这部分笔记 博文内容涉及: ini&yaml格式的inventory相互转化 inventory 中的变量管理Demo inventory 常见报 ...

  5. 细说Ansible主机清单inventory

    Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. 前言 关于Ansible是什么,我在之前的文章中没有说:当然了,我这里也不会说.当 ...

  6. Ansible Tower 入门 1 - 配置主机清单和访问凭证

    Ansible Tower 入门 1 - 配置主机清单和访问凭证 Ansible Tower 入门 2 - 通过模板运行 Git 上的 Playbook 和 Role Ansible Tower 入门 ...

  7. ansible安全之加密主机清单

    2019独角兽企业重金招聘Python工程师标准>>> cat hosts2 wali ansible_ssh_host=10.0.0.1 ansible_ssh_port=1457 ...

  8. Ansible中的inventory主机清单(预祝你我有数不尽的鲜花和浪漫)

    文章目录 前言 一.inventory 主机清单 1.1 inventory 中的变量 1.2 主机变量 1.3 组变量 1.4 组嵌套 前言 本篇博客主要解释Ansible主机清单的相关配置知识 一 ...

  9. 「Python 网络自动化」Nornir—— Inventory(主机清单)介绍

    Nornir 是一个非常好用的网络自动化的框架,最近我输出了一份 Nornir 中文手册,欢迎大家阅读指正. 主机清单 主机清单(Inventory) 是 nornir 最重要的部分,它由 hosts ...

  10. Linux修改主机名(静态主机名、临时主机名)

    背景 通常情况下Linux在安装时会设置主机名.root密码等相关参数,但安装后的使用过程中或许你需要修改主机名,本文讲述如何修改主机名,包括临时修改和永久修改. 查看主机名 原生态的Linux一般自 ...

最新文章

  1. 用db-RDA进行微生物环境因子分析-“ggvegan“介绍
  2. centos7安装wget_Centos7系统切换Python2到Python3.x
  3. 七十七、 二叉树的层次遍历和最大深度
  4. 玩转Keras之Seq2Seq自动生成标题 | 附开源代码
  5. RHEL账号总结一:账号的分类
  6. Big Sur更新下载过慢?亲测!满速下载macOS原版系统
  7. 基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案
  8. VS2010调试窗口一闪而过解决方法
  9. 如何下载vSphere Big Data Extensions 1.0免费试用版
  10. tn文本分析语言(三):高级语法
  11. 【第二周】结对编程体会
  12. HTTP有哪些特点?
  13. c语言贺卡代码大全,C++实现新年贺卡程序
  14. 电脑双屏开机后副屏黑屏_电脑两个显示器怎么设置,电脑显示器黑屏
  15. “二清”以纳入一级、二级黑名单
  16. linux 搭建mqtt服务
  17. 小程序怎么弄?小程序开发多少钱?
  18. 蚂蚁花呗账单分期和交易分期的费用如何计算?
  19. 如何取消windows XP登录框,让其自动登录
  20. 微信小程序识别图片并提取文字_这款微信小程序可以批量图片转文字?识别准确率超高!...

热门文章

  1. 显示模块模式 — Revealing Module Pattern
  2. pentestbox基础设置
  3. 25岁社招进阿里,从电商到有赞新零售,他仅1年就打开了马云一直想做的新领域!...
  4. 苹果充电显示不支持此配件_水果手机充电时,显示不支持此配件时的应急处理小窍门...
  5. 网易云/QQ音乐歌单转移到Apple Music内
  6. vue2.0 唤起百度地图app_高德地图公测“你好小德”语音助手:解决十大驾车导航痛点...
  7. Python学习笔记4---类和对象
  8. php halt,ThinkPHP halt和$this-error区别?
  9. 转载1:拓扑结构介绍及其种类
  10. pdf照片显示正常打印时被翻转_2020年二级建造师打印须知