06 ansible剧本功能实践介绍

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

02. 在剧本中设置变量信息
方式一:直接在剧本文件编写
vars:
oldboy01: data01
oldboy02: data02

方式二:在命令行中进行指定
ansible-playbook --extra-vars=oldboy01=data01

方式三:在主机清单文件编写
[oldboy]
oldboy01=data01
oldboy02=data02

三种变量设置方式都配置了,三种方式的优先级???
最优先: 命令行变量设置
次优先: 剧本中变量设置
最后: 主机清单变量设置

如何全局设置变量: roles 剧本整合

03. 在剧本中设置注册信息
- hosts: oldboy
tasks:
- name: check server port
shell: netstat -lntup --- 端口信息
register: get_server_port<--端口信息

- name: display port info
debug: msg={{ get_server_port.stdout_lines }}
显示进程信息,表示服务已经正常启动
PS: 设置变量不能有空格信息

04. 在剧本中设置判断信息
如何指定判断条件:
(ansible_hostname == "nfs01")
(ansible_hostname == "web01")
setup模块中显示被管理主机系统的详细信息

- hosts: oldboy
remote_user: root
tasks:
- name: Check File
file: path=/tmp/this_is_{{ ansible_hostname }}_file state=touch
when: (ansible_hostname == "nfs") or (ansible_hostname == "backup")

- name: install httpd
yum: name=httpd state=installed
when: (系统情况 == "CentOS")

- name: install httpd2
yum: name=httpd2 state=installed
when: (系统情况 == "ubuntu")

获取内置变量方法:
ansible oldboy -m setup -a "filter=ansible_hostname"
常见主机信息:
ansible_all_ipv4_addresses: 仅显示ipv4的信息。
ansible_devices: 仅显示磁盘设备信息。
ansible_distribution: 显示是什么系统,例:centos,suse等。
ansible_distribution_major_version: 显示是系统主版本。
ansible_distribution_version: 仅显示系统版本。
ansible_machine: 显示系统类型,例:32位,还是64位。
ansible_eth0: 仅显示eth0的信息。
ansible_hostname: 仅显示主机名。
ansible_kernel: 仅显示内核版本。
ansible_lvm: 显示lvm相关信息。
ansible_memtotal_mb: 显示系统总内存。
ansible_memfree_mb: 显示可用系统内存。
ansible_memory_mb: 详细显示内存情况。
ansible_swaptotal_mb: 显示总的swap内存。
ansible_swapfree_mb: 显示swap内存的可用内存。
ansible_mounts: 显示系统磁盘挂载情况。
ansible_processor: 显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus: 显示cpu个数(只显示总的个数)。

获取子信息方法:
ansible_eth0[ipv4]

04. 在剧本中设置循环信息
vim test04.yml
- hosts: all
remote_user: root
tasks:
- name: Add Users
user: name={{ item.name }} groups={{ item.groups }} state=present
with_items:
- { name: ‘testuser1‘, groups: ‘bin‘ }
- { name: ‘testuser2‘, groups: ‘root‘ }

vim test05.yml
- hosts: all
remote_user: root
tasks:
- name: Installed Pkg
yum: name={{ item }} state=present
with_items:
- wget
- tree
- lrzsz

05. 在剧本中设置忽略错误
默认playbook会检查命令和模块的返回状态,如遇到错误就中断playbook的执行
可以加入ignore_errors: yes忽略错误
vim test06.yml
- hosts: all
remote_user: root
tasks:
- name: Ignore False
command: /bin/false
ignore_errors: yes
- name: touch new file
file: path=/tmp/oldboy_ignore state=touch

06. 在剧本中设置标签功能
- hosts: oldboy
ignore_errors: yes
remote_user: root
tasks:
- name: Check File
file: path=/tmp/this_is_{{ ansible_hostname }}_file state=touch
when: (ansible_hostname == "nfs01") or (ansible_hostname == "backup")
tags: t1

- name: bad thing
command: ech 123
#ignore_errors: yes
tags: t2

- name: install httpd
yum: name=httpd state=installed
when: (ansible_all_ipv4_addresses == ["172.16.1.7","10.0.0.7"])
tags: t3

- name: install httpd2
yum: name=httpd2 state=installed
when: (ansible_distribution == "ubuntu")
tags: t4

指定执行哪个标签任务: ansible-playbook --tags=t2 test05.yml
跳过指定标签任务: ansible-playbook --skip-tags=t2 test05.yml

07. 在剧本中设置触发功能
- hosts: backup
remote_user: root
tasks:
- name: 01 Install rsync
yum: name=rsync state=present

- name: 02 push config file
copy: src=./file/{{ item.src }} dest=/etc/{{ item.dest }} mode={{ item.mode }}
with_items:
- { src: "rsyncd.conf", dest: "rsyncd.conf", mode: "0644" }
- { src: "rsync.password", dest: "rsync.password", mode: "0600" }
notify: restart rsync server

handlers:
- name: restart rsync server
service: name=rsyncd state=restarted

08. 将多个剧本进行整合
方式一:include_tasks: f1.yml
- hosts: all
remote_user: root
tasks:
- include_tasks: f1.yml
- include_tasks: f2.yml

方式二:include: f1.yml
- include:f1.yml
- include:f2.yml

方式三:- import_playbook:
[[email protected] ansible-playbook]# cat main.yml
- import_playbook: base.yml
- import_playbook: rsync.yml
- import_playbook: nfs.yml
- import_playbook: oxxx.yml
- import_playbook: rsync.yml
- import_playbook: nfs.yml

原文地址:https://www.cnblogs.com/linux985/p/11320228.html

时间: 2024-10-09 01:54:38

06 ansible剧本功能实践介绍的相关文章

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

[翻译] API测试的最佳实践 - 介绍

API测试的最佳实践 - 介绍 在上一篇“是什么让API测试很叼”一文中,我们讨论API与其他形式的软件测试的差异.部分是因为API之间的通信压根就没考虑让你能读懂,纯粹是为了方便计算机之间的交互而设计的.另一部分是由于业务层面上有很多因素影响了API的性能和功能. 当然,值得庆幸的是,你可以参考一些已有的最佳实践,增加你维护API质量的几率.在本章节中,你将学到这些最佳实践.这些最佳实践也是有难易等级的,大体分两类,一类是白色腰带的,适合那些初学API测试的人,一类是黑带,适合有经验的API测

免密码交互方式+ansible批量管理服务介绍

介绍了ssh服务 1) 远程连接加密传输数据协议,实现远程连接登录,默认端口222)ssh远程连接原理依赖于锁头(公钥)和钥匙(私钥),实现远程加密连接3)ssh基于秘钥远程登录原理a 管理服务器创建秘钥対,将公钥传输发送给给管理端b 管理端请求与被管理端建立连接c 被管理向管理端发送公钥质询d 管理端处理质询信息,实现管理与被管理端免密码交互4)基于ssh协议相关命令ssh scp sftp netstat -lntup |egrep sshd 查看ssh端口 1.1 部署ssh+key (免

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 prote

高性能ORM框架XLinq功能详细介绍

之前简单介绍了XLinq的一些功能,有很多功能都没有提到,现在给XLinq加了一些功能,这次把所有功能都介绍一遍. 设计目标 易用性 在使用一个框架的时候 应该没几个人会喜欢写一大堆的配置文件吧 也应该没几个人会喜欢为了完成一个小功能却需要写一大堆代码 这是XLinq开发的首要目标之一,就是尽可能提高易用性 最小配置的情况下仅需要一句连接字符串的配置就可以使用 默认支持的是Sql Server 2008 R2数据库,理论上说也大部分支持了sql server系的其他数据库 高性能 目前针对查询时

珊瑚SDK功能点介绍!

珊瑚SDK功能点介绍 好友排行榜 珊瑚SDK使用第三方社交系统作为账号登陆,并且导入第三方社交系统的好友关系,形成好友之前的积分排行,目前支持的登陆系统有QQ微博账号,新浪微博账号(也支持游客模式):排行榜的周期目前为15天积分清零重新排序: 全球排行榜 全球排行榜就是当前应用内的所有玩家之间的积分排行榜:排行榜的周期目前为15天积分清零重新排序: 个人资料 个人资料是包含了个人头像,名字,本周最高名次,历史排名,他在和谁玩,他在玩的游戏,挑战TA. 个人头像和名字为用户登陆的第三方社交系统资料

Dreamweaver8下定义WEB功能页面介绍

dreamweaver8下定义WEB功能页面介绍 说到dreamweaver8,相信大家都比我熟悉,也许有人说dreamweaver8是一个开发工具,那开发工具多了,我自己是这么认为的,dreamweaver8是专业的网页开发工具:由于自己是做运维的,所以在开发的角度我算是一个绝对的菜鸟,可以说是一窍不通,之前就没做过开发先关的东西,现在才开始慢慢接触,所以每天晚上回家看看java.html.jsp相关的文档学习,同时,我们大家都知道一般正常的页面程序文件通过新建超级文本文件来修改扩展名来定义文

iOS开源项目MobileProject功能点介绍

一:MobileProject简介 MobileProject项目是一个以MVC模式搭建的开源功能集合,基于Objective-C上面进行编写,意在解决新项目对于常见功能模块的重复开发,MobileProject对于项目的搭建也进行很明确的划分,各个模块职责也比较明确,MobileProject也引入的一些常用第三方插件.宏定义.工具帮助类等:整个项目也是在不断更新跟维护中,功能点也会不断更新:代码支持iOS7以后版本: 二:项目框架内容 三:功能点介绍 1:JSPatch热更新功能 相信关于J

IOS 开启定位功能 CLLocationManager 介绍-简单使用

iOS 中的定位功能,主要在 CoreLocation库中,需要用到位置管理器 CLLocationManager 来完成绝大多数事情. 要使用 CLLocationManager 首先需要一个对象~ 以及对它进行简单的设置,最后开启定位功能, 就开始定位了,定位成功或者失败后都会调用代理方法返回信息 1 CLLocationManager *manger; 2 3 manger = [[CLLocationManager alloc] init]; //初始化 4 5 manger.deleg