inventory主机清单

ansible的主要功能在于批量主机操作,为了便捷地使用其中的部分主句,可以在inventory file中将其分组命名。默认的inventory file为/etc/ansible/hosts,inventory file 可以有多个,可以通过Dynamic inventory来动态生成。

官方文档:

How to build your inventory — Ansible Documentation

主机清单文件格式:

mail.example.com[webservers]
web[01:03]
192.168.0.[1:3]
web01 ansible_host=10.164.162.1 ansible_ssh_port=22 ansible_user=root ansible_password=123456
foo.example.com
bar.example.com[dbservers]
one.example.com
two.example.com
mysql[01:03]
three.example.com

Ansible相关工具

/usr/bin/ansible 主程序,临时命令执行工具

/usr/bin/ansible-doc 查看配置文档,模块功能查看工具,相当于man

/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具,相当于脚本

/usr/bin/ansible-pull 远程执行命令的工具

/usr/bin/ansible-console 基于console界面与用户交互的执行工具

/usr/bin/ansible-galaxy 下载、上传优秀代码或roles模块的官方平台

利用Ansible实现管理的主要方式:

利用ansible临时命令

playbook 主要用于长期规划好的,大型项目长期,需要前期规划。

ansible使用前准备:

ansible 相关工具大多数是通过ssh协议,实现对远程主机的配置管理、应用部署、任务执行等功能
建议:使用此工具前,先配置ansible主控端能基于密钥认证的方式联系各个被管理节点 。
基于key验证脚本:
vim /etc/ssh/ssh_config仅修改一行如下:
StrictHostKeyChecking no[root@localhost ansible]# cat ssh_key.sh
IPLIST="
192.168.2.11
192.168.2.12
192.168.2.14"rpm -q sshpass &> /dev/null || yum -y install sshpass
[ -f /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa  -P ''
export SSHPASS=123456
for IP in $IPLIST; do sshpass -e ssh-copy-id -o StrictHostKeyChecking=no $IP; done
wait

ansible ad-hoc的执行方式主要工具就是ansible:

ansible <host-pattern> [-m module_name] [-a args]
--version #显示版本
-m module   #指定模块,默认为command
-v #详细过程 -vv -vvv更详细
--list-hosts #显示主机列表,可简写 --list
-C, --check   #检查,并不执行
-T, --timeout=TIMEOUT #执行命令的超时时间,默认10s
-k, --ask-pass     #提示输入ssh连接密码,默认Key验证
-u, --user=REMOTE_USER #执行远程执行的用户,默认root
-b, --become    #代替旧版的sudo 切换
--become-user=USERNAME  #指定sudo的runas用户,默认为root
-K, --ask-become-pass  #提示输入sudo时的口令
-f FORKS, --forks FORKS #指定并发同时执行ansible任务的主机数
将普通用户提升权限
#先在被控制端sudo授权
[root@centos8 ~]#grep test /etc/sudoers
test    ALL=(ALL) NOPASSWD: ALL
#以test的用户连接用户,并利用sudo代表root执行whoami命令
[root@ansible ~]#ansible 10.0.0.8 -m shell -a 'whoami' -u test -k -b --become-user=root
SSH password: #输入远程主机test用户ssh连接密码
10.0.0.8 | CHANGED | rc=0 >>
root
ansible命令执行过程:
1. 加载自己的配置文件,默认/etc/ansible/ansible.cfg
2. 加载自己对应的模块文件,如:command
3. 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户 $HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
4. 给文件+x执行
5. 执行并返回结果
6. 删除临时py文件,退出

ansible-vault :
此工具可以用于加密解密yml文件
ansible-vault encrypt hello.yml #加密
ansible-vault decrypt hello.yml #解密
ansible-vault view hello.yml #查看
ansible-vault edit hello.yml #编辑加密文件
ansible-vault rekey hello.yml #修改口令
ansible-vault create new.yml #创建新文件
Command 模块:
功能:在远程主机执行命令,此为默认模块,可忽略 -m 选项
注意:此命令不支持 $VARNAME < > | ; & 等,可能用shell模块实现
注意:此模块不具有幂等性[root@ansible ~]#ansible websrvs -m command -a 'chdir=/etc cat centos-release'
10.0.0.7 | CHANGED | rc=0 >>
CentOS Linux release 7.7.1908 (Core)
10.0.0.8 | CHANGED | rc=0 >>
CentOS Linux release 8.1.1911 (Core)
[root@ansible ~]#ansible websrvs -m command -a 'chdir=/etc creates=/data/f1.txt
cat centos-release'
10.0.0.7 | CHANGED | rc=0 >>
CentOS Linux release 7.7.1908 (Core)
10.0.0.8 | SUCCESS | rc=0 >>
skipped, since /data/f1.txt exists
[root@ansible ~]#ansible websrvs -m command -a 'chdir=/etc removes=/data/f1.txt
cat centos-release'
10.0.0.7 | SUCCESS | rc=0 >>
skipped, since /data/f1.txt does not exist
10.0.0.8 | CHANGED | rc=0 >>
CentOS Linux release 8.1.1911 (Core)
ansible websrvs -m command -a 'service vsftpd start'
ansible websrvs -m command -a 'echo 123456 |passwd --stdin test'
ansible websrvs -m command -a 'rm -rf /data/'
ansible websrvs -m command -a 'echo hello > /data/hello.log'
ansible websrvs -m command -a "echo $HOSTNAME"
----------------
Shell 模块:
功能:和command相似,用shell执行命令,支持各种符号,比如:*,$, >
注意:此模块不具有幂等性
范例:
[root@ansible ~]#ansible websrvs -m shell -a "echo $HOSTNAME"
10.0.0.7 | CHANGED | rc=0 >>
ansible
10.0.0.8 | CHANGED | rc=0 >>
ansible
[root@ansible ~]#ansible websrvs -m shell -a 'echo $HOSTNAME'
10.0.0.7 | CHANGED | rc=0 >>
centos7.wangxiaochun.com
10.0.0.8 | CHANGED | rc=0 >>
centos8.localdomain
[root@ansible ~]#ansible websrvs -m shell -a 'echo 123456 | passwd --stdin test'
10.0.0.7 | CHANGED | rc=0 >>
Changing password for user test.
passwd: all authentication tokens updated successfully.
10.0.0.8 | CHANGED | rc=0 >>
Changing password for user test.
passwd: all authentication tokens updated successfully.
[root@ansible ~]#ansible websrvs -m shell -a 'ls -l /etc/shadow'
10.0.0.7 | CHANGED | rc=0 >>
---------- 1 root root 889 Mar  2 14:34 /etc/shadow
10.0.0.8 | CHANGED | rc=0 >>
---------- 1 root root 944 Mar  2 14:34 /etc/shadow
[root@ansible ~]#ansible websrvs -m shell -a 'echo hello > /data/hello.log'
10.0.0.7 | CHANGED | rc=0 >>
10.0.0.8 | CHANGED | rc=0 >>
[root@ansible ~]#ansible websrvs -m shell -a 'cat /data/hello.log'
10.0.0.7 | CHANGED | rc=0 >>
hello
10.0.0.8 | CHANGED | rc=0 >>
hello
-------------------
Script 模块:
功能:在远程主机上运行ansible服务器上的脚本(无需执行权限)
注意:此模块不具有幂等性
范例:
ansible websrvs -m script -a /data/test.sh
----------
Copy 模块:
功能:从ansible服务器主控端复制文件到远程主机
注意: src=file 如果是没指明路径,则为当前目录或当前目录下的files目录下的file文件
#如目标存在,默认覆盖,此处指定先备份
ansible websrvs -m copy -a "src=/root/test1.sh dest=/tmp/test2.sh   owner=test
mode=600 backup=yes"
#指定内容,直接生成目标文件
ansible websrvs -m copy -a "content='test line1\ntest line2\n'
dest=/tmp/test.txt"
#复制/etc目录自身,注意/etc/后面没有/
ansible websrvs -m copy -a "src=/etc dest=/backup"
#复制/etc/下的文件,不包括/etc/目录自身,注意/etc/后面有/
ansible websrvs -m copy -a "src=/etc/ dest=/backup"
--------------------------
Get_url 模块:url: 下载文件的URL,支持HTTP,HTTPS或FTP协议
dest: 下载到目标路径(绝对路径),如果目标是一个目录,就用服务器上面文件的名称,如果目标设置了名
称就用目标设置的名称
owner:指定属主
group:指定属组
mode:指定权限
force: 如果yes,dest不是目录,将每次下载文件,如果内容改变,替换文件。如果否,则只有在目标不存
在时才会下载该文件
checksum: 对目标文件在下载后计算摘要,以确保其完整性示例: checksum="sha256:xxxxx",checksum="sha256:http://example.com/path/sha256sum.txt"
url_username: 用于HTTP基本认证的用户名。 对于允许空密码的站点,此参数可以不使用
`url_password'
url_password: 用于HTTP基本认证的密码。 如果未指定`url_username'参数,则不会使用
`url_password'参数
validate_certs:如果“no”,SSL证书将不会被验证。 适用于自签名证书在私有网站上使用
timeout: URL请求的超时时间,秒为单位
[root@ansible ~]#ansible websrvs -m get_url -a 'url=http://nginx.org/download/nginx-1.18.0.tar.gz dest=/usr/local/src/nginx.tar.gz
checksum="md5:xxxxxx"'
-------------------------
Fetch 模块:
功能:从远程主机提取文件至ansible的主控端,copy相反,目前不支持目录
ansible websrvs -m fetch -a 'src=/root/test.sh dest=/data/scripts'
---------------
Lineinfile 模块:
ansible在使用sed进行替换时,经常会遇到需要转义的问题,而且ansible在遇到特殊符号进行替换时,
存在问题,无法正常进行替换 。其实在ansible自身提供了两个模块:lineinfile模块和replace模块,可
以方便的进行替换
一般在ansible当中去修改某个文件的单行进行替换的时候需要使用lineinfile模块
regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最
后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被
删除。
如果想进行多行匹配进行替换需要使用replace模块
功能:相当于sed,可以修改文件内容
ansible websrvs -m lineinfile -a "path=/etc/httpd/conf/httpd.conf
regexp='^Listen' line='Listen 80'"
ansible all -m   lineinfile -a "path=/etc/selinux/config regexp='^SELINUX='
line='SELINUX=disabled'"
ansible all -m lineinfile  -a 'dest=/etc/fstab state=absent regexp="^#"'
-----------------
SELinux 模块:
该模块管理 SELInux 策略
ansible -i hosts test -m selinux -a 'state=disabled'
[root@centos8 ~]#grep -v '#' /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
[root@centos8 ~]#getenforce
Permissive

Ansible相关笔记1相关推荐

  1. ansible相关说明

    2.ansible相关说明 2.1.ansible相关命令 ansible:定义并运行简单任务,主要执行ad-hoc命令 ansible-config:查看.编辑.管理ansible配置 ansibl ...

  2. SQL常用用法相关笔记

    SQL常用用法相关笔记 1).----CAST和CONVERT的用法 SQL中的cast和convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式. CAST和CONVERT提供相似的 ...

  3. cscope 相关笔记

    cscope 相关笔记 cscope 可以用来解析 c 代码,生成引用信息,用户通过查询引用信息来在代码中进行跳转. 使用步骤如下: find 寻找待 index 的文件,并将文件列表写入到 csco ...

  4. windows相关笔记

    windows相关笔记 前言 一. 彻底关闭windows10自动更新 二.开机启动批处理禁用win10更新服务 三.解决win和(linux或mac)双系统时间不同步问题 四.添加环境变量示例ope ...

  5. 矩阵的病态性研究相关笔记

    矩阵的病态性研究相关笔记 一.概念定义 1.1 良态VS病态 病态问题(ill-conditioned problem)是指输出结果相对于输入非常敏感,输入数据哪怕是极少(或者极微妙)的噪声也会导致输 ...

  6. 微环谐振器MRR相关笔记

    微环谐振器MRR相关笔记 这是第一次将自己的笔记上传到博客上,直接全部复制进来好像就成一整个图片了,下次我再排版好一些. 这些是我在科研的途中整理出来的资料,有些直接贴图,有些计算是自己手写的.

  7. Linux红帽认证工程师(RHCE)考试笔记(Ansible学习笔记)

    写在前面: 笔记是因为考红帽所以整理的,大都是老师的笔记,主要是常用模块整理,后面有些类似考试的实战题目,不是教程,教程建议大家到下面的学习网站,这篇博客适合温习用,层次有些乱,嘻嘻,生活加油,天天开 ...

  8. ansible学习笔记

    ansible是基于模块化的,通过调用特定的模块,完成特定的任务 基于Python语言实现,由Paramiko.PyYAML和Jinja2三个关键模块实现 部署简单,agentless(无需部署客户端 ...

  9. [笔记] 最大权闭合子图最大流最小割相关笔记

    最大权闭合子图 对于最大权闭合子图的理论学习并且补充一部分网络流的笔记 有向图中若干个点组成的一个集合\(V\),集合\(V\)的所有出边所连的点也都属于\(V\),这些点构成的图即为闭合子图 点有点 ...

最新文章

  1. pma mysql_Table ‘phpmyadmin.pma_table_uiprefs’ doesn’t exist mysql
  2. android 标准字体,文字规范标准(IOS/Android)
  3. 阿里云高效基因序列检索助力新冠肺炎病毒序列快速分析
  4. 三天打鱼两天晒网python程序设计_Python经常会遇到三天的笔试题:钓鱼和两天的晒网:,之,三天打鱼,两天晒网...
  5. 如何用Python画一只机器猫?| 原力计划
  6. 将某一列转换为字符类型_还在为数据清洗抓狂?这里有一个简单实用的清洗代码集...
  7. 海康摄像头b/s架构下的视频直播
  8. 红帽Linux7考题,RHCSA题库-RedHat-7.pdf
  9. aria2+RPC+m3u8下载工具(windows版)
  10. php有个schost.exe_全面认识Svchost.exe进程
  11. 域名生成企业邮箱golang企业邮箱发邮件 golang gmail发邮件
  12. 不下心删了线上环境mysql数据库数据,辛亏有惊无险
  13. 计算机密码技术发展,密码技术的分类
  14. 今日恐慌与贪婪指数为21 恐慌程度有所缓解
  15. vue+js input文本框输入时自动填充邮箱后缀组件封装
  16. STM32H7 BDMA应用示例
  17. Android开发:如何实现收发短信
  18. 电路单位本质与dB家族
  19. win10如何激活电脑系统
  20. 人民币符号输入的几种方法

热门文章

  1. k8s部署wordpress应用
  2. Android studio怎么实现swf播放器
  3. [WikiOI] 2.3.3 素数判定
  4. .Net写的Mail Util(C#)
  5. android车机启动器,【分享】车载启动器 AG 车载桌面启动器1.5.1车机桌面
  6. 代码生成工具的实现思路
  7. 软件管理的工具-360软件管家提供下载
  8. 这可能是人工智能领域覆盖最全的一份技术趋势报告
  9. 开发人员各级岗位胜任力模型
  10. 个人站长如何接入支付打赏