世事洞明皆学问,人情练达即文章。这篇文章主要讲述Ansible自动化工具的实践相关的知识,希望能为你提供帮助。
Ansible自动化工具的实践
1.Ansible介绍与安装
介绍ansible
Centos7下安装ansibleyum install epel-release -y
yum installansible-y
查看版本[root@master ~]# ansible--version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u/root/.ansible/plugins/modules, u/usr/share/ansible/plugins/modules]
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Aug7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
2.设置主机清单
Ansible服务的主配置文件优先级文件位置
高./ansible.cfg
中~/.ansible.cfg
低/etc/ansible/ansible.cfg#默认存在
受控主机的列表[test01]#平台、环境
192.168.31.161#centos7-game-01
[test02]#平台、环境
192.168.31.162#centos6-game-01
初步配置vi /etc/ansible/ansible.cfg##打开以下两个注释
host_key_checking = False#关闭SSH协议的指纹验证
remote_port= 22##可以自定义受控主机ssh端口
remote_user = root##使用root用户连接
显示出受管主机的信息# ansible-inventory --graph
@all:
|--@test01:
||--192.168.31.161
|--@test02:
||--192.168.31.162
|--@ungrouped:
3.运行临时命令
使用ansible-doc -l 命令列出所有的模块信息
[root@master ~]# ansible-doc-l
fortios_router_community_listConfigure community lists in Fortinets FortiOS and FortiGate
azure_rm_devtestlab_infoGet Azure DevTest Lab facts
ecs_taskdefinitionregister a task definition in ecs
avi_alertscriptconfigModule for setup of AlertScriptConfig Avi RESTful Object
tower_receiveReceive assets from Ansible Tower
netapp_e_iscsi_targetNetApp E-Series manage iSCSI target configuration
azure_rm_acsManage an Azure Container Service(ACS) instance
fortios_log_syslogd2_filterFilters for remote system server in Fortinets FortiOS and FortiGate
junos_rpcRuns an arbitrary RPC over NetConf on an Juniper JUNOS device
na_elementsw_vlanNetApp Element Software Manage VLAN
pn_ospfCLI command to add/remove ospf protocol to a vRouter
pn_snmp_vacmCLI command to create/modify/delete snmp-vacm
cp_mgmt_service_sctpManages service-sctp objects on Check Point over Web Services API
onyx_ospfManage OSPF protocol on Mellanox ONYX network devices
icx_commandRun arbitrary commands on remote Ruckus ICX 7000 series switches
【Ansible自动化工具的实践】
常用模块
ansible命令常用的语法-k 手动输入SSH协议密码
-i 指定主机清单文件
-m 指定要使用的模块名
-M 指定要使用的模块路径
-S 使用su命令
-T 设置SSH协议连接超时时间
-a 设置传递给模块的参数
—version 查看版本信息
-h 帮助信息
# ansible all -m ping##全部机器,即是主机清单里面的机器
# ansible test01 -m ping ##按平台或环境
# ansible 192.168.31.161 -m ping ##按ip单个机器
# ansible all -m shell-a "yum install vim-y"
4.剧本文件实战
mkdir/etc/ansible/yaml
cat >
>
/etc/ansible/yaml/packages.yml <
<
EOF
---
- name: 安装软件包
hosts: test01,test02
tasks:
- name: one
yum:
name: vim
state: latest
EOF
# ansible-playbook /etc/ansible/yaml/packages.yml
ok和changed表示执行及修改成功
5.创建及使用角色
# yum install -y rhel-system-roles
# ansible-galaxy list
# /usr/share/ansible/roles
- rhel-system-roles.timesync, (unknown version)
cp /usr/share/doc/rhel-system-roles-1.0.1/timesync/example-single-pool-playbook.yml /etc/ansible/yaml/timesync.yml
cat /etc/ansible/yaml/timesync.yml
---
- hosts: " targets "
vars:
timesync_ntp_servers:
- hostname: 2.pool.ntp.org
pool: yes
iburst: yes
roles:
- rhel-system-roles.timesync
vi /etc/ansible/yaml/timesync.yml#修改去掉角色部分
---
- hosts: " targets "
vars:
timesync_ntp_servers:
- hostname: 2.pool.ntp.org
pool: yes
iburst: yes
ansible-playbook /etc/ansible/yaml/timesync.yml
示例:# ansible-galaxy install nginxinc.nginx
# cd /etc/ansible/roles
# ansible-galaxy init apache
- Role apache was created successfully
# Ansible角色目录结构及含义
# ll apache/
目录含义
defaults包含角色变量的默认值(优先级低)。
files包含角色执行tasks任务时做引用的静态文件。
handlers包含角色的处理程序定义。
meta包含角色的作者、许可证、频台和依赖关系等信息。
README.md
tasks包含角色所执行的任务。
templates包含角色任务所使用的Jinja2模板。
tests包含用于测试角色的剧本文件。
vars包含角色变量的默认值(优先级高)。
# cat >
>
/etc/ansible/yaml/roles.yml<
<
EOF
---
- name: 调用自建角色
hosts: all
roles:
- apache
EOF
# ansible-playbook /etc/ansible/yaml/roles.yml
小结下:复杂的操作还是远程执行脚本比较好
6.简单使用
1.批量远程命令执行
# ansible all -m shell-a "yum install vim-y"
2.批量远程脚本执行
mkdir /etc/ansible/script/
cat >
/etc/ansible/script/nginx-install.sh <
<
EOF
echo "开始安装nginx" >
/tmp/nginx-install.log
echo "安装nginx成功" >
>
/tmp/nginx-install.log
EOF
# ansible all -m script -a "/etc/ansible/script/nginx-install.sh"
3.批量分发文件
mkdir /etc/ansible/file
cat >
/etc/ansible/file/copy-test-txt.yml <
<
EOF
---
- name: 拷贝本地文件到受控机器上
hosts: all
tasks:
- name:
copy:
src: /etc/ansible/file/test.txt
dest: /root/a/test.txt
owner: root
group: root
mode: 0644
EOF
ansible-playbook/etc/ansible/file/copy-test-txt.yml
推荐阅读
- 干货 | 图标(ICON) 的 9 种设计原则
- Docker镜像管理
- Win10基础 路径 存放系统壁纸的文件夹
- 使用Redis解决秒杀业务问题分析与解决方案
- pg快速入门--体系结构
- Ansible使用playbook批量安装Nginx
- 电池管理系统你了解多少()
- CentOS 文件压缩命令
- 路由基础之访问控制列表