RHCE学习教程之Ansible高级用法
ansible是自动化运维利器,可以通过一台Linux服务器批量控制其他服务器。
本文主要介绍ansible的一些高级用法。
关键词:RHCE Ansible
自定义变量
主机清单变量
针对主机或者组
1 | ;针对主机 |
定义剧本变量
使用关键字vars,针对所有执行剧本的主机生效
1 |
|
定义文档变量
可以在执行剧本时进行调用
1 | # var.yml |
以交互方式定义变量
1 |
|
魔法变量
1 | inventory_hostname=清单主机名 |
使用copy模块拷贝常量和变量字符串到被控主机
1 | - hosts: node1 |
模块相关
template模板
根据模板生成相应的文件
src:源文件
dest:目标文件
1
2
3
4
5
6
7
8
9#cat test.j2
{{ ansible_hostname }} # 根据环境变量生成文件
# cat tepl.yml
- hosts: node1
tasks:
- template:
src: test.j2
dest: /opt/test.html
使用ansible容器运行剧本
安装navigator包
1 | sudo yum install -y ansible-navigator |
修改navigator配置文件
1 | #vim ~/.ansible-navigator.yml |
修改container配置文件
1 | # vim /etc/containers/registries.conf |
下载镜像
1 | ansible-navigator images |
执行剧本任务
1 | ansible-navigator run debug.yml -m stdout |
使用ansible-vault加密敏感文件
| 参数 | 用法 |
|---|---|
| encrypt | 加密 |
| decrypt | 解密 |
| view | 查看 |
| rekey | 重置密码 |
1 | # 输入密码,加密test01配置文件 |
角色
角色是定义好的统一目录规范
修改配置,定义角色目录位置
1 | # vim ~/ansible/ansible.cfg |
手动创建角色
创建http角色相关目录,http是创建的角色,tasks是存放任务的目录
1 | mkdir -p ansible/roles/http/tasks |
roles/tasks/main.yml文件
1 | - yum: |
编写剧本调用角色
1 | - name: test roles |
使用命令创建角色
1 | ansible-galaxy init roles/vsftpd |
| 目录 | 用途 |
|---|---|
| tasks | 存放执行任务 |
| vars | 存放变量,优先级高 |
| defaults | 存放变量,优先级低 |
| files | 存放静态文件,如图片、视频、配置文件等 |
| meta | 存放作者、角色版本信息 |
| templates | 存放动态数据,比如j2模板 |
| handlers | 存放提前定义好的任务 |
测试1
准备静态文件
1 | echo 123 > roles/vsftpd/files/123 |
根据角色创建任务
1 | # vim roles/vsftpd/tasks/main.yml |
编写脚本调用角色
1 | # vim test2.yml |
执行剧本
1
ansible-playbook test2.yml
测试2
定义变量
1 | # vim roles/vsftpd/vars/main.yml |
测试变量
1 | # vim roles/vsftpd/tasks/main.yml |
查看模板生成的文件
1 | # less /var/ftp/pub |
使用网络下载安装角色
配置需要下载的角色文件
1 | #vim roles.yml |
安装网上下载的角色
1 | ansible-galxy install -r roles.yml |