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相关推荐

  1. REINFORCEMENT LEARNING USING QUANTUM BOLTZMANN MACHINES利用量子波兹曼机进行强化学习

    REINFORCEMENT LEARNING USING QUANTUM BOLTZMANN MACHINES 利用量子波兹曼机进行强化学习 Abstract. We investigate whet ...

  2. learning to rank_排序

    20210415 ndcg 一个正确结果位置的随机结果是0.45左右 20210412 考察产业匹配MRR评估指标的随机情况是什么样的 随机情况下会是什么样的 可以根据ndcg的值来看是否随机 202 ...

  3. 【Learning Notes】线性链条件随机场(CRF)原理及实现

    1. 概述 条件随机场(Conditional Random Field, CRF)是概率图模型(Probabilistic Graphical Model)与区分性分类( Discriminativ ...

  4. 几何深度学习(Geometric Deep Learning)技术

    几何深度学习(Geometric Deep Learning)技术 几何深度学习综述 从论文Geometric Deep Learning: Grids, Groups, Graphs, Geodes ...

  5. 深度学习编译器综述The Deep Learning Compiler

    深度学习编译器综述The Deep Learning Compiler The Deep Learning Compiler: A Comprehensive Survey 参考文献: https:/ ...

  6. 全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样 ...

  7. 全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 3.优化计算图 计算图是在DL框架中表示程序的常 ...

  8. 全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样的硬件 ...

  9. TVM优化Deep Learning GPU算子

    TVM优化Deep Learning GPU算子 高效的深度学习算子是深度学习系统的核心.通常,这些算子很难优化,需要HPC专家付出巨大的努力. 端到端张量IR / DSL堆栈TVM使这一过程变得更加 ...

最新文章

  1. 分类问题-样本权重(sample_weight)和类别权重(class_weight)
  2. Mongodb aggregation 基本操作示例
  3. 实验七——函数定义及调用总结
  4. visio 形状_分享我Visio经验(问题从来都不是问题)
  5. Windows完全卸载oracle11g步骤
  6. 【git】git compare with branch 一样的代码 但是却标识不一样 成块显示 Git 比较 不准确
  7. HDU 3790 最短路径问题 (SPFA)
  8. 不固定宽度的div居中显示
  9. Web的Cookies,Session,Application
  10. Tomcat 7.0.94 安装与配置
  11. Latex自定义图表序号
  12. 1934. 贝茜放慢脚步
  13. 一文详解IBM SPSS Modeler 18.0安装教程
  14. powerbi 线性回归_精选 | 实用炫酷的Power BI自定义图表
  15. c++ zlib加密压缩文件详细介绍与代码演示
  16. 反思:安全需要新体系
  17. Android项目必备技术
  18. 春节大优惠,蓝牙耳机推荐,低延迟日常通勤必备蓝牙耳机
  19. android下拉框代码,Android下拉列表spinner的实例代码
  20. 家庭网络搭建_家庭网络

热门文章

  1. 洛谷 Markdown - 从入门到精通
  2. Visual Basic快捷教程——变量、常量和运算符
  3. 【温故而知新-Javascript】理解 DOM
  4. oracle 11g移动数据文件
  5. Android鬼点子-近期项目总结(2)-日历
  6. 【计算智能】关于遗传算法解决TSP城市问题的初步学习
  7. 浅谈AppStore中的评分与评论
  8. 将获取城市数据按ABCD顺序排列
  9. Coursera | Applied Plotting, Charting Data Representation in Python(UMich)| Assignment2
  10. OpenCV 2.4+ C++ SVM文字识别