ansible剧本编写


作者Georgekai

归档:学习笔记

2018/1/31

ansible剧本编写

1.1.1 ansible基于口令方式免交互登录

1.编辑/etc/ansible/hosts管理配置文件,实现基于口令免交互登录

vim /etc/ansible/hosts

[client]

172.16.1.7

172.16.1.31 ansible_ssh_user=root ansible_ssh_pass=123456

172.16.1.41

2.测试是否需要进行交互登录

[[email protected] ~]# ansible george -m ping

172.16.1.41 | SUCCESS => {

"changed": false,

"ping": "pong"

}

1.1.2 . ansible以交互方式输入密码登录(所有远程主机密码必须一致)

1. 不配置密码

vim /etc/ansible/hosts

[oldboy]

172.16.1.7

172.16.1.31 ansible_ssh_user=root

172.16.1.41

2. -k参数实现以交互方式远程登录

[[email protected] ~]# ansible george -m ping -k   #以交互方式输入密码进行远程管理

SSH password:

172.16.1.7 | SUCCESS => {

"changed": false,

"ping": "pong"

}

1.2 ansible剧本编写规则说明

1.2.1 语法格式

ansible剧本格式:遵循yaml语法格式(类似python脚本编写格式)

rsync配置文件格式:ini语法格式

sersync配置文件格式:xml语法格式(标签格式)

1.2.2 pyYAML语法规则:

规则一:缩进

yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组 成。一定不能使用tab键

强调*****:当编写ansible剧本时,请把键盘的tab键扣掉

规则二:冒号

CMD="echo"

yaml:

mykey:

每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格)

规则三:短横线

想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一  部分

核心规则:有效的利用空格进行剧本的编写,剧本编写是不支持tab的

1.2.3  ansible-playbook编写格式

 

1.创建部署rsyn服务剧本

vim /etc/ansible/ansible_play_book/rsync.yaml

-空hosts:空oldboy     - hosts : 指定主机组或单个主机,也可以是all所有主机

空空tasks:             :固定格式

空空空空-空file:空dest=..........   :指定模块

 

2.对剧本语法检测

ansible-playbook --syntax-check  /etc/ansible/ansible-play_book/rsync.yaml

3.-C模拟执行剧本

ansible-playbook  -C /etc/ansible/ansible-play_book/rsync.yaml

4.执行剧本

ansible-playbook   /etc/ansible/ansible-play_book/rsync.yaml

1.2.4  多剧本编写

1. 编写多个剧本

### 剧本的开头,可以不写

- hosts: all                     <- all表示所有主机,可以写某个主机组; -(空格)hosts:(空格)all

task:                       <- 剧本所要干的事情; (空格)(空格)task:

- command: echo hello oldboy linux.        (空格)(空格)空格)(空格)-(空格)模块名称:(空格)模块中对应的功能

2.  剧本编写内容扩展:剧本任务定义名称

- hosts: 172.16.1.7            <- 处理指定单台服务器         -(空格)hosts:(空格)all

task:                     <- 剧本所要干的事情;         (空格)(空格)task:

- name:               <—注释信息

command: echo hello oldboy linux.                     (空格)(空格)空格)(空格)-(空格)模块名称:(空格)模块中对应的功能

 

3. 剧本编写内容扩展:剧本任务编写定时任务

# ansible all -m cron -a "name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate t ime.nist.gov >/dev/null 2>&1'"

- hosts: all

tasks:

- name: restart-network

cron: name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'

说明:测试剧本命令后面可以跟多个-v进行调试检查

4. 剧本编写内容扩展:剧本任务编写多个任务

- hosts: all

tasks:

- name: restart-network

cron: name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate     time.nist.gov >/dev/null 2>&1'

- name: sync time

cron: name='sync time' minute=*/5 job="/usr/sbin/ntpdate pool.ntp.com >/dev/null 2>&1"

5. 剧本编写内容扩展:剧本任务编写多个主机

- hosts: 172.16.1.7

tasks:

- name: restart-network

cron: name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate  time.nist.gov >/dev/null 2>&1'

- name: sync time

cron: name='sync time' minute=*/5 job="/usr/sbin/ntpdate pool.ntp.com >/dev/null 2>&1"

- hosts: 172.16.1.31

tasks:

- name: show ip addr to file

shell: echo $(hostname -i) >> /tmp/ip.txt

 

1.2.5  剧本编写方式

1.多主机单任务编写方式

2.多主机多任务编写方式
3.不同主机多任务编写方式

1.2.6 ansible编写剧本拍错思路:

1. ansible-playbook编写完,检查语法和模式测试运行

2. 打开脚本,根据-name定位异常原因,然后将剧本中的内容转换为命令执行一次

3. 将参数中的脚本文件推送到远程服务器,在远程服务器本地执行一次

4. ansible执行时,加上-vvvv(显示详细执行过程),也可以定位异常原因

原文地址:http://blog.51cto.com/13055758/2067877

时间: 2024-08-30 13:30:22

ansible剧本编写的相关文章

Linux中ansible批量管理软件部署及剧本编写

服务器版本信息: Centos6.9 [[email protected] ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux ansible软件介绍 ansible是一个基于Python开发的自动化运维工具! 其功能实现基于SSH远程连接服务! ansible可以实现批量系统配置.批量软件部署.批量文件拷贝.批量运行命令等

06 ansible剧本功能实践介绍

ansible剧本功能实践介绍================================================================================================01. 编写剧本的重要功能介绍 a 在剧本中设置变量信息 OK b 在剧本中设置注册信息 OK 执行剧本时,可以显示输出命令结果信息 b 在剧本中设置判断信息 OK c 在剧本中设置循环信息 d 在剧本中设置错误忽略 d 在剧本中设置标签信息 e 在剧本中设置触发信息 f 在剧

Ansible剧本管理(实例解释!!!)

inventory主机清单 ansible默认的主机清单是/etc/ansible/hosts文件,主机清单可以手动设置,也可以通过Dynamic Inventory动态生成,一般主机名使用FQDN vim /etc/ansible/hosts [webserver] #方括号设置组名 www1.example.org #定义被监控主机,这边可以是主机名也可以是IP地址,主机名需要修改/etc/hosts文件 www2.example.org:2222 #冒号后定义远程连接端口,默认是ssh的2

ansible 剧本

yum rpm 和yum 的区别 rpm:redhat package manager yum可以解决依赖关系 yum 源配置 [epel] name=Extra Packages for Enterprise Linux 7 - $basearch #名字 baseurl=http://mirrors.aliyun.com/epel/7/$basearch #rpm源的地址,可以写http,https,ftp,Samba,file: failovermethod=priority enable

CentOS 6.5环境使用ansible剧本自动化部署Corosync + pacemaker环境及corosync常用配置详解

环境说明: 192.168.8.39 node2.chinasoft.com 192.168.8.42 node4.chinasoft.com 192.168.8.40 ansible管理服务器 192.168.8.77 VIP 192.168.8.20 nfs服务器 1.双机互信需要设置好,hosts文件需要解析好,时间要同步,配置好yum源 双击互信及Hosts文件配置,参考:http://blog.csdn.net/reblue520/article/details/51213030 最好

用ansible剧本搭建lnmp

首先在主服务器上搭建ansible直接用云yum装就可以, yum -y install ansible 如果copy报错一下的语句 "msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!" 需要在被分发的服务器上安装支持包 [[email protected] ~]# mount /dev/sr0 /media/cdrom/ mo

ansible模块编写

一直不知道这个模块到底在哪,并且也挺想搞清楚官方那些模块到底在哪个目录下.1.使用grep -rl "copy.py" /usr/lib/python2.7/site-packages/ansible(这个目录是专门放ansible源码目录的)然后找到是/usr/lib/python2.7/site-packages/ansible/modules/files/copy.py这个文件,这里需要注意的是如果你安装ansible用过copy这个模块,那么可能就不会是copy.py这个文件,

Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken

前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken>,以及关于jenkins的简单使用<Jenkins持续集成介绍及插件安装版本更新演示(一)--技术流ken>.相信大家也已经完全掌握了这三项工具的使用,也可以使用这几项工具可以部署静态以及动态网站了. 以前的博客可以实现一键部署网站

ansible使用1

常用软件安装及使用目录   ansible软件2 ### ansible软件部署安装需求#### 01. 需要有epel源 系统yum源(base epel--pip gem) sshpass---epel 02. ssh+key免密码环境必须部署完成 ### ansible常用模块总结 01. ping---ansible测试模块 ansible 172.16.1.41 -m ping 172.16.1.41 | SUCCESS => { "changed": false, &