[Linux]Ansible自动化运维② - 工具与模块
参考:
一、Ansible的工具
1.1 Ansible的工作前提
Ansible正常工作需要满足两个前提:
- 主控机与被控机都要开启SSH服务
- 主控机与被控即都要装有Python
1.2 Ansible的安装文件
[root@localhost /]# rpm -ql ansible | more
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles
/usr/bin/ansible
/usr/bin/ansible-config
/usr/bin/ansible-connection
/usr/bin/ansible-console
/usr/bin/ansible-doc
/usr/bin/ansible-galaxy
/usr/bin/ansible-inventory
/usr/bin/ansible-playbook
/usr/bin/ansible-pull
/usr/bin/ansible-vault
--More--
通过 rpm -ql ansible | more
命令可查看 Ansible的相关文件:
/etc/ansible/ansible.cfg
:默认ansible的默认配置文件位置
/etc/ansible/hosts
:默认inventory主机清单位置
/etc/ansible/roles
:默认inventory角色位置
/usr/bin/ansible
:ansible命令的文件
/usr/lib/python3.6/site-packages/ansible
:提供Python模块
/usr/share/man/man1/
:帮助文档
备注:RPM(红帽软件包管理器)。RPM 有点像Windows 系统中的控制面板,会建立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。
1.3 Ansible的配置文件
[root@localhost /]# grep "^\[" /etc/ansible/ansible.cfg
[defaults]
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]
以下是/etc/ansible/ansible.cfg
中配置块的含义:
[defaults]
:默认常用配置
[inventory]
:主机清单插件
[privilege_escalation]
:用于提权
[paramiko_connection]
:Python paramiko模块的连接设备(默认SSH)
[ssh_connection]
:SSH连接设置
[persistent_connection]
:长连接设置
[accelerate]
:加速模式的配置
[selinux]
:selinux设置
[colors]
:输出结果颜色的设置
[diff]
:输出不同的设置
1.4 Ansible的相关工具
[root@localhost /]# ansible
ansible ansible-doc ansible-pull
ansible-config ansible-galaxy ansible-vault
ansible-connection ansible-inventory
ansible-console ansible-playbook
输入 ansible
然后双击Tab键
ansible
:主程序,临时命令执行工具
ansible-doc
:用于查看配置文档,模块功能
ansible-galaxy
:用于上传、下载Roles模块,需要网络
ansible-playbook
:用于定制自动化任务,编排剧本的工具
ansible-pull
:用于远程执行命令的工具
ansible-vault
:文件加密工具
ansible-console
:基于Console界面与用户交互的执行工具
利用ansible实现管理的主要方式:
- 临时命令使用场景 —> Ad-hoc
- 大型项目场景,有规划过程 —> Ansible-playbook
1.4.1 【帮助工具】Ansible-doc
[root@localhost /]# ansible-doc -l | wc -l
3387
ansible-doc -l | wc -l
:可以查看ansible有多少个模块
ansible-doc -l | grep <module_name>
:可以查看相关的模块
ansible-doc <module_name>
:可以查看对应模块的详细功能
1.4.2 【角色共享】Ansible-galaxy
Ansible-galaxy官网:Ansible Galaxy
Galaxy中可以下载到写好的Roles(Roles可以理解为Playbook的集合)
Galaxy安装一个Nginx Rols的示例:
- 以Web类为例
- 下载一个Nginx
- 通过命令
ansible-galaxy install <module_name>
安装
[root@localhost /]# ansible-galaxy install geerlingguy.nginx
- downloading role 'nginx', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role-nginx/archive/3.1.0.tar.gz
- extracting geerlingguy.nginx to /root/.ansible/roles/geerlingguy.nginx
- geerlingguy.nginx (3.1.0) was installed successfully
- 安装完之后,默认会放在用户家目录下的.ansible目录中
默认放在:/root/.ansible/roles/<role_name>
[root@localhost geerlingguy.nginx]# pwd
/root/.ansible/roles/geerlingguy.nginx
- 会有以下的目录及文件
[root@localhost geerlingguy.nginx]# tree .
.
├── defaults
│ └── main.yml
├── handlers
│ └── main.yml
├── LICENSE
├── meta
│ └── main.yml
├── molecule
│ └── default
│ ├── converge.yml
│ └── molecule.yml
├── README.md
├── tasks
│ ├── main.yml
│ ├── setup-Archlinux.yml
│ ├── setup-Debian.yml
│ ├── setup-FreeBSD.yml
│ ├── setup-OpenBSD.yml
│ ├── setup-RedHat.yml
│ ├── setup-Ubuntu.yml
│ └── vhosts.yml
├── templates
│ ├── nginx.conf.j2
│ ├── nginx.repo.j2
│ └── vhost.j2
└── vars
├── Archlinux.yml
├── Debian.yml
├── FreeBSD.yml
├── OpenBSD.yml
├── RedHat.yml
└── Rocky.yml
各个文件夹下文件的作用后面补充
1.4.3 【剧本工具】Ansible-playbook
ansible-playbook <playbook_name>
:用于执行写好的剧本
1.4.4 【加密工具】Ansible-vault
ansible-vault encrypt <playbook_name>
:加密Playbook
ansible-vault decrypt <playbook_name>
:解密Playbook
ansible-vault view <playbook_name>
:查看加密的Playbook
ansible-vault edit <playbook_name>
:编辑加密的Playbook
ansible-vault create <playbook_name>
:创建新的加密的Playbook
加解密的示例:
一个未加密的 test.yml 文件
将 test.yml 加密
1.4.5 【交互工具】Ansible-console
[root@localhost /]# ansible-console
Welcome to the ansible console.
Type help or ? to list commands.
root@all (2)[f:5]$ cd vm_group
root@vm_group (2)[f:5]$ ping
vm2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
vm1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
root@vm_group (2)[f:5]$
通过 ansible-console
工具,可以实现交互输入命令
forks n
:设置并发数
cd <host_group>
:切换主机组
list
:列出主机组列表
help
&?
:列出内置命令
ping
:ping测试(当前主机组)
二、Ansible的模块
参考:
2.1 Ansible 模块简介
我们可以通过 ansible-doc -l
查看所有的模块。
通过 ansible-doc <module_name>
查看指定模块的帮助信息。
模块有两种调用方式,一种通过ad-hoc命令行,另一种通过playbook调用。
第一种:ad-hoc 命令行
格式:ansible <host_group> -m <module_name> -a "key=value"
通过 -m 指定模块,通过 -a 指定参数(key=value的形式)
例如:
ansible webservers -m service -a "name=httpd state=started"
ansible webservers -m ping
ansible webservers -m command -a "/sbin/reboot -t now"
第二种:playbook 剧本
例如:
- 以简单key:value的形式传递参数
- name: reboot the servers
action: command /sbin/reboot -t now
或者简写成:
- name: reboot the servers
command: /sbin/reboot -t now
- 以yaml语法中的"complex args"传递参数
- name: restart webserver
service:
name: httpd
state: restarted
2.2 Ansible 模块速查
所有内置的模块都可以到上面的文档中查找
模块种类有很多,如云计算类模块、集群类模块、命令类模块、数据库类模块、文件类模块、消息类模块、监控类模块等等。根据需求可以到网站中查找模块的详细说明。
至于一些常见的模块,后面专门整理一篇博文(✿◡‿◡)!
2.3 共同的返回值
2.3.1 Facts
一些模块返回"facts"(例如:setup模块),这些是通过一个"ansible_facts"作为key和内部一些自动收集的值直接作为当前主机的变量并且他们不需要注册这些数据。
2.3.2 Status
每一个模块都必须返回一个status,来表示这个模块是成功的,是否有任何改变或者没有发生改变。当检查模式下发现模块不支持或者不满足某些条件,Ansible自己会返回一个status并跳过这个模块。
2.3.3 其他的共同返回值
如msg,会被用来解释执行失败的原因或者是关于执行过程的一些说明。
[Linux]Ansible自动化运维② - 工具与模块的更多相关文章
- Ansible自动化运维工具及其常用模块
Ansible自动化运维工具及其常用模块 目录 Ansible自动化运维工具及其常用模块 一.Ansible简介 1. Ansible概述 2. Ansible作用 3. Ansible的工作模块 4 ...
- Ansible自动化运维工具-上
[Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要 ...
- Ansible 自动化运维工具
Ansible 自动化运维工具 Ansible是什么? Ansible是一个"配置管理工具"也是一个"自动化运维工具" Ansible 作用: Ansible是 ...
- Ansible自动化运维工具的使用
Ansible自动化运维工具的使用 host lnventory 管理主机 ip root账号密码 ssh端口 core mod ...
- Linux轻量级自动化运维工具— Ansible
Ansible 是什么 ? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配 ...
- Ansible自动化运维工具使用
概述本文描述自动化运维工具 Ansible 的安装及基础使用方法,包含: Centos 下的安装主机配置Ad-Hoc command(命令行执行)Playbook (任务剧本)Ansible 和 Sa ...
- ansible自动化运维工具使用详解
一. ansible 简介 1. ansible ansible是新出现的 自动化 运维工具 , 基于Python研发 . 糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行 ...
- Ansible自动化运维工具
ansible软件介绍 python语言是运维人员必会的语言! ansible是一个基于Python开发的自动化运维工具!(saltstack) 其功能实现基于SSH远程连接服务! ans ...
- [Linux]Ansible自动化运维① - 入门知识
目录 一.Ansible 概述 1.1 Ansible 是什么 1.2 Ansible 优势 1.3 Ansible 特性 二.Ansible 入门 2.1 Ansible 架构 2.2 Ansibl ...
随机推荐
- xmake v2.5.7 发布,包依赖锁定和 Vala/Metal 语言编译支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- 给MediaWiki增加看板娘
我们想给我们的mediawiki增加个像我博客里这样的看板娘,那么怎么做才好呢? 其实很简单,只要在相应的模板文件里增加指定代码就好了! 修改模板文件 找到模板文件skins/Vector/Vecto ...
- UVA1620 Lazy Susan(结论证明)
结论: 当 \(n\geq 6\) 时,若 \(n\) 是奇数且输入序列的逆序对数是奇数,则无解,否则有解. 当 \(n=4\) 或 \(n=5\) 时,答案个数及其有限,只有这个环是 \(1\) 到 ...
- node十年心酸史,带你了解大前端的由来!
前言 近年来,随着前端的丰富,前后端分离是趋势.各种东西如雨后春笋一般,层出不穷.node.js的出现,使前端真正意义上变成了大前端. 前端由来之HTML发展史 1990 年,Tim Berners- ...
- LeetCode入门指南 之 回溯思想
模板 result = {} void backtrack(选择列表, 路径) { if (满足结束条件) { result.add(路径) return } for 选择 in 选择列表 { 做选择 ...
- Java程序中使用Spire Jar包报java.lang.NoSuchMethodError类型错误的解决方法
Jar包功能概述 使用Spire系列的Jar包可以操作Word.Excel.PPT.PDF.Barcode等格式的文件,分别对应使用的jar包是Spire.Doc for Java.Spire.XLS ...
- 基本ServletWEB项目
项目搭建 项目链接https://gitee.com/zhangjzm/smbms.git 前置知识,Servlet JSP 结构图 搭建maven web项目 1.搭建一个maven web项目 2 ...
- ICCV2021 | MicroNet:以极低的 FLOPs 改进图像识别
前言:这篇论文旨在以极低的计算成本解决性能大幅下降的问题.提出了微分解卷积,将卷积矩阵分解为低秩矩阵,将稀疏连接整合到卷积中.提出了一个新的动态激活函数-- Dynamic Shift Max,通过 ...
- Intel® QAT加速卡之编程demo框架
QAT demo流程框架 示例一: 代码路径:qat1.5.l.1.13.0-19\quickassist\lookaside\access_layer\src\sample_code\functio ...
- 第三课:GDB 常用的调试命令概览
先给出一个常用命令的列表,后面会结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下一行 ...