twelfth day for learning
Ansible
术语 |
中文叫法 |
含义 |
Control node |
控制节点 |
指的是安装了Ansible服务的主机,也被称为Ansible控制端,主要是用来发布运行任务、调用功能模块,对其他主机进行批量控制。 |
Managed nodes |
受控节点 |
指的是被Ansible服务所管理的主机,也被称为受控主机或客户端,是模块命令的被执行对象。 |
Inventory |
主机清单 |
指的是受控节点的列表,可以是IP地址、主机名称或者域名。 |
Modules |
模块 |
指的是上文提到的特定功能代码,默认自带有上千款功能模块,在Ansible Galaxy有超多可供选择。 |
Task |
任务 |
指的是Ansible客户端上面要被执行的操作。 |
Playbook |
剧本 |
指的是通过YAML语言编写的可重复执行的任务列表,把常做的操作写入到剧本文件中,下次可以直接重复执行一遍。 |
Roles |
角色 |
从Ansible 1.2版本开始引入的新特性,用于结构化的组织Playbook,通过调用角色实现一连串的功能。 |
Ansible服务主配置文件优先级顺序
优先级 |
文件位置 |
高 |
./ansible.cfg |
中 |
~/.ansible.cfg |
低 |
/etc/ansible/ansible.cfg |
可以修改一下配置文件来修改设置,配置文件被读取的顺序如下:
* ANSIBLE_CONFIG (一个环境变量) * ansible.cfg (位于当前目录中) * .ansible.cfg (位于家目录中) * /etc/ansible/ansible.cfg
主机清单(Inventory):/etc/ansible/hosts 文件
主机清单文件修改后的是会立即生效的,一般常用“ansible-inventory --graph”命令以结构化的方式显示出受管节点主机信息
Ansible常用变量汇总
参数 |
作用 |
ansible_ssh_host |
受管主机名 |
ansible_ssh_port |
端口号 |
ansible_ssh_user |
默认账号 |
ansible_ssh_pass |
默认密码 |
ansible_shell_type |
Shell终端类型 |
将对应的变量及信息填写到主机清单文件中,在执行任务时便会自动的对账号密码进行匹配,而不用再每次重复输入
账户和密码:
1.[root@linuxprobe ~]# vim /etc/ansible/hosts
[all:vars] ansible_user=root ansible_password=redhat
2.将Ansible主配置文件中的第71行设置成默认不需要SSH协议的指纹验证,以及第107行设置成默认执行Playbook时所使用的管理员名称为root:
[root@linuxprobe ~]# vim /etc/ansible/ansible.cfg
71 host_key_checking = False
107 remote_user = root
注:不需要重启服务即可
扩展:
prod组是B组的组成员:vim /etc/ansible/hosts
[B:children]
prod
Ansible服务常用模块名称及作用
模块名称 |
模块作用 |
ping |
检查受管节点主机网络是否能够联通。 |
yum |
安装、更新及卸载软件包。 |
yum_repository |
管理主机的软件仓库配置文件。 |
template |
复制模板文件到受管节点主机。 |
copy |
新建、修改及复制文件。 |
user |
创建、修改及删除用户。 |
group |
创建、修改及删除用户组。 |
service |
启动、关闭及查看服务状态。 |
get_url |
从网络中下载文件。 |
file |
设置文件权限及创建快捷方式。 |
cron |
添加、修改及删除计划任务。 |
command |
直接执行用户指定的命令。 |
shell |
直接执行用户指定的命令(支持特殊字符)。 |
debug |
输出调试或报错信息。 |
mount |
挂载硬盘设备文件。 |
filesystem |
格式化硬盘设备文件。 |
lineinfile |
通过正则表达式修改文件内容。 |
setup |
收集受管节点主机上的系统及变量信息。 |
firewalld |
添加、修改及删除防火墙策略。 |
lvg |
管理主机的物理卷及卷组设备。 |
lvol |
管理主机的逻辑卷设备。 |
ansible是用于执行临时任务的命令,也就是执行后即结束,不同于Playbook剧本文件的可重复性!!
常用的语法格式为“ansible 受管主机节点 -m 模块名称 [-a 模块参数]”
如果已经设置过主机清单文件(/etc/ansible/hosts)则可以写all参数来代指全体受管节点,或用dev、test等主机组名称来代指某一组的主机节点。
可用“ansible-doc 模块名称”的命令格式自行查询,或是用“ansibe-doc -l”命令列举出当前Ansible服务所支持的所有模块信息:
Playbook:
Playbook剧本文件采用YAML语言编写,有着强制性的格式规范,通过空格将不同信息分组,因此有时会因一两个空格错位而导致报错,需要万分小心。YAML文件开头需要先写三个减号---,多个分组信息需要间隔一致才能执行,上下也要对齐,后缀名一般为.yml。
Playbook剧本文件的结构由四部分组成——target、variable、task、handler。target部分用于定 义要执行剧本的主机节点范围、variable部分用于定义剧本执行时要用的变量、task部分用于定义将在远程主机上执行的任务列表、handler部分用于定义执行完成后需要调用的后续任务。
roles:
角色的好处就在于其组织成了一个简洁的、可重复调用的抽象对象,用户可以把注意力放到Playbook的大局上,统筹各个关键性任务,只有在需要时才去深入了解细节。角色的获取有三种方法,分别是加载系统内置的、从外部环境获取的以及自行创建的,
1.加载系统内置角色:用户只需要配置好软件仓库的配置文件,然后安装包含系统角色的软件包rhel-system-roles,随后便可以在系统中找到它们了: dnf install -y rhel-system-roles
安装完毕后,使用ansible-galaxy list命令查看RHEL 8系统中有哪些自带的角色可用
注意:
1. /usr/share/ansible/roles:角色包存放位置,需要在当前使用的ansible主配置ansible.conf中的roles_path 那一行附加上,如:
roles_path = /home/greg/ansible/roles:/usr/share/ansible/roles
2./usr/share/doc/rhel-system-roles/ :可从此处获取角色模板,如timesync角色可:
[greg@bastion ansible]$ cp /usr/share/doc/rhel-system-roles/timesync/example-timesync-playbook.yml timesync.yml 将模板文件复制到配置目录下,然后编辑内容
2.从外部获取角色:Ansible Galaxy是Ansible的官方社群服务,用于共享角色和功能代码,用户可以自由的在网站上共享和下载Ansible角色
方法一:ansible-galaxy install 角色名
第一步:进入下载首页:https://galaxy.ansible.com 第二步:点击search输入角色名,找到对应角色 第三步:查看角色安装安装方式的命令 第四步:联网状态直接执行安装命令,如:ansible-galaxy install nginxinc.nginx 即可
方法二:
背景:存在一些特殊情况,其一是国内访问Ansible官网可能存在不稳定的情况,访问不了或者速度慢。其二是某位作者是将创作品上传到了自己的网站,或者除Ansible Galaxy官网以外的其他平台,此时就不能使用法一安装
方法: 需要手动先编写一个YAML语言格式的文件,指明网址链接和角色名称,再用“-r”参数进行加载 ansible-galaxy install -r *.yml
示例:
[root@linuxprobe roles]# cat nginx.yml --- - src: https://www.linuxprobe.com/Software/nginxinc-nginx_core-0.3.0.tar.gz name: nginx-core
[root@linuxprobe roles]# ansible-galaxy install -r nginx.yml
[root@linuxprobe roles]# ansible-galaxy list
[root@linuxprobe ansible]# ansible-galaxy install -r roles/nginx.yml
[root@linuxprobe ansible]# ansible-galaxy list
注:yml编辑完成后,在roles目录下install -r加载后,还需要返回上级ansibles即ansible主目录下再加载角色一次!!!!
3.自建角色:
第一步:先进入ansible主配置目录下的roles目录下,如:cd /home/greg/ansible/roles
第二步:创建一个新的角色信息使用“init”参数,且建立成功后便会在当前目录下生成出一个新的目录:
[root@linuxprobe roles]# ansible-galaxy init apache 创建apache角色
此时的apache即是角色名称,也是用于存在角色信息的目录名称,切换进入看到目录结构:
[root@linuxprobe roles]# cd apache [root@linuxprobe apache]# ls defaults files handlers meta README.md tasks templates tests vars
表16-8 Ansible角色目录结构及含义
目录 |
含义 |
defaults |
包含角色变量的默认值(优先级低)。 |
files |
包含角色执行tasks任务时做引用的静态文件。 |
handlers |
包含角色的处理程序定义。 |
meta |
包含角色的作者、许可证、频台和依赖关系等信息。 |
tasks |
包含角色所执行的任务。 |
templates |
包含角色任务所使用的Jinja2模板。 |
tests |
包含用于测试角色的剧本文件。 |
vars |
包含角色变量的默认值(优先级高)。 |
twelfth day for learning相关推荐
- REINFORCEMENT LEARNING USING QUANTUM BOLTZMANN MACHINES利用量子波兹曼机进行强化学习
REINFORCEMENT LEARNING USING QUANTUM BOLTZMANN MACHINES 利用量子波兹曼机进行强化学习 Abstract. We investigate whet ...
- learning to rank_排序
20210415 ndcg 一个正确结果位置的随机结果是0.45左右 20210412 考察产业匹配MRR评估指标的随机情况是什么样的 随机情况下会是什么样的 可以根据ndcg的值来看是否随机 202 ...
- 【Learning Notes】线性链条件随机场(CRF)原理及实现
1. 概述 条件随机场(Conditional Random Field, CRF)是概率图模型(Probabilistic Graphical Model)与区分性分类( Discriminativ ...
- 几何深度学习(Geometric Deep Learning)技术
几何深度学习(Geometric Deep Learning)技术 几何深度学习综述 从论文Geometric Deep Learning: Grids, Groups, Graphs, Geodes ...
- 深度学习编译器综述The Deep Learning Compiler
深度学习编译器综述The Deep Learning Compiler The Deep Learning Compiler: A Comprehensive Survey 参考文献: https:/ ...
- 全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样 ...
- 全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 3.优化计算图 计算图是在DL框架中表示程序的常 ...
- 全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样的硬件 ...
- TVM优化Deep Learning GPU算子
TVM优化Deep Learning GPU算子 高效的深度学习算子是深度学习系统的核心.通常,这些算子很难优化,需要HPC专家付出巨大的努力. 端到端张量IR / DSL堆栈TVM使这一过程变得更加 ...
最新文章
- 分类问题-样本权重(sample_weight)和类别权重(class_weight)
- Mongodb aggregation 基本操作示例
- 实验七——函数定义及调用总结
- visio 形状_分享我Visio经验(问题从来都不是问题)
- Windows完全卸载oracle11g步骤
- 【git】git compare with branch 一样的代码 但是却标识不一样 成块显示 Git 比较 不准确
- HDU 3790 最短路径问题 (SPFA)
- 不固定宽度的div居中显示
- Web的Cookies,Session,Application
- Tomcat 7.0.94 安装与配置
- Latex自定义图表序号
- 1934. 贝茜放慢脚步
- 一文详解IBM SPSS Modeler 18.0安装教程
- powerbi 线性回归_精选 | 实用炫酷的Power BI自定义图表
- c++ zlib加密压缩文件详细介绍与代码演示
- 反思:安全需要新体系
- Android项目必备技术
- 春节大优惠,蓝牙耳机推荐,低延迟日常通勤必备蓝牙耳机
- android下拉框代码,Android下拉列表spinner的实例代码
- 家庭网络搭建_家庭网络
热门文章
- 洛谷 Markdown - 从入门到精通
- Visual Basic快捷教程——变量、常量和运算符
- 【温故而知新-Javascript】理解 DOM
- oracle 11g移动数据文件
- Android鬼点子-近期项目总结(2)-日历
- 【计算智能】关于遗传算法解决TSP城市问题的初步学习
- 浅谈AppStore中的评分与评论
- 将获取城市数据按ABCD顺序排列
- Coursera | Applied Plotting, Charting Data Representation in Python(UMich)| Assignment2
- OpenCV 2.4+ C++ SVM文字识别