Ansible权威指南-读书笔记
2 Ansible基础元素介绍
2.1 ansible 目录结构介绍
2.2 ansible 配置文件解析
配置文件解析顺序:当前命令执行目录-->用户家目录下的.ansible.cfg-->/etc/ansible.cfg
2.3 ansible 命令用法详解
2.4 ansible系列命令用法详解
- ansible
- ansible-galaxy
- ansile-galaxy的功能可以裂解为Github或Pip的功能,通过该命令,可以根据下载量和关注量查找和安装优秀的roles
- ansible-doc
- ansible-pull
- ansible-playbook
- ansible-vault
- ansible-console
2.5 ansible Inventory配置详解
2.5.1 定义主机和组
2.5.2 定义主机变量
2.5.3 定义组变量
2.5.4 定义组嵌套及组变量
2.5.5 多重变量定义
2.5.6 其他Inventory参数列表
3 ansible Ad-Hoc命令集
3.1 ad-hoc试用场景
3.2 ad-hoc命令集介绍
3.2.1 ad-hoc命令集用法简介
3.2.2 通过ad-hoc查看系统设置
3.2.3 通过ad-hoc研究ansible并发特性
3.2.4 通过ad-hoc研究ansible模块使用
3.3 ad-hoc组管理和特定主机变更
3.3.1 ad-hoc组定义
3.3.2 ad-hoc配置管理:配置Proxy与web servers实践
3.3.3 ad-hoc配置后端:配置NOSQL与DataBase实践
3.3.4 ad-hoc特定主机变更
3.4 ad-hoc用户管理
3.4.1 window用户管理
3.4.2 linux用户管理
3.4.3 应用层用户管理
4 playbook快速入门
4.1 playbook语法简介
4.1.1 多行缩进
4.1.2 单行缩进
4.2 playbook案例分析
4.3 playbook与shell脚本差异对比
4.4 ansible-playbook实战小技巧
4.4.1 限定执行范围
4.4.2 用户与权限设置
4.4.3 ansible-playbook:其他选项技巧
5 ansible playbook扩展
5.1 Handlers
5.2 环境变量
5.3 变量
5.3.1 playbook变量
5.3.2 在Inventory文件中定义变量
5.3.3 注册变量
5.3.4 试用高阶变量
5.3.5 主机变量与组变量
5.3.6 Facts(收集系统信息)
5.3.6.1 facts信息
playbook文件中如果定义了gather_facts: no
运行该脚本时,就不会在执行的远程主机上收集系统性信息
---
- hosts: node
gather_facts: no
5.3.6.1 本地fact变量
[root@server ~]# ansible node -m setup -a "filter=ansible_local"
172.17.0.32 | SUCCESS => {
"ansible_facts": {},
"changed": false
}
172.17.0.31 | SUCCESS => {
"ansible_facts": {
"ansible_local": {
"setting": {
"user": {
"admin": "jane,jou",
"normal": "zhansgan"
}
}
}
},
"changed": false
}
172.17.0.33 | SUCCESS => {
"ansible_facts": {},
"changed": false
}
[root@server ~]# ansible 172.17.0.31 -m command -a "cat /etc/ansible/facts.d/setting.fact"
172.17.0.31 | SUCCESS | rc=0 >>
[user]
admin=jane,jou
normal=zhansgan
5.3.7 ansible加密模块Vault
一些常用的选项
- edit
- rekey:重新修改已被加密文件密码
- create: 创建一个新的文件,并直接对其进行加密
- view:查看经过加密的文件
- decrypt: 解密文件
ansible-vault encrypt sample.yml
ansible-playbook test.yml --vault-password-file /PATH/TO/PASSWD.txt
注意 :python的cryptography模块会加速vault的速度
5.3.8 变量优先级(由高到低)
- 在命令刚中定义的变量(即使用-e定义的变量)
- 在Inventory中定义的连接变量(例如:ansible_ssh_user)
- 大多数的其他变量(命令行转换,play中的变量,included变量,role中的变量等)
- 在Inventory定义的其他变量
- 由系统通过gather_facts方法发现的变量
- role默认变量,这是一个默认值,很容易丧失优先权
5.4 if/then/when---流程控制
5.4.1 Jinja2正则表达,python内置函数和逻辑判断
可以借助python的一些内置方法,大大增强了ansible的功能
5.4.1.1 jinja2数据类型
- 字符串型
string - 整数型
45 - 浮点数型
42.33 - 列表
[1,2,3] - 元组
(1,2,3) - 字典
{key:value} - 布尔型
true和false
5.4.1.2 jinja2支持的数据运算
- 基本数据运算
加减乘除,比较运算==,!=,>= - 逻辑运算
and,or,not defined,undefined,equalto,even,iterable
5.4.2 变量注册器register
注册变量的四种类型
- changed 任务是否对远程主机造成的变更
- delta 任务运行所用的时间
- stdout 正常的输出时间
- stderr 错误信息
使用的方式
- shell: my_command_here
register: my_command_result
调用结果的方式:my_command_result.stdout
5.4.3 when条件判断
5.4.4 changed_when,failed_when条件判断
5.4.5 ignore_errors条件判断
5.5 任务键流程控制
5.5.1 任务委托
---
- hosts: node
gather_facts: no
tasks:
- name: "install git"
delegate_to: 172.17.0.3
yum: name=git state=present
#表示在指定的主机上运行该任务
5.5.2 任务暂停
5.6 交互式提示
---
- hosts: node
vars_prompt:
- name: share_user
prompt: "what is your network username"
- name: share_pass
prompt: "what is your network password"
private: yes
default: admin
confirm: yes
5.7 Tags标签
5.8 Block块
Ansible权威指南-读书笔记的更多相关文章
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...
- 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块
五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options] -v,--verbose ...
- HTTP权威指南读书笔记
HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...
- css权威指南读书笔记
今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...
- 经典的性能优化最佳实践 web性能权威指南 读书笔记
web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典 ...
- css权威指南读书笔记-第10章浮动和定位
这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...
- 《Ansible权威指南》笔记(2)——Inventory配置
四.Inventory配置ansible通过Inventory来定义主机和组,使用时通过-i指定读取,默认/etc/ansible/hosts.可以存在多个Inventory,支持动态生成.1.定义主 ...
- 《Ansible权威指南》笔记(4)——Playbook
七.Playbook1.语法特性如下:(1)"---"首行顶格开始(2)#号注释(3)缩进统一,不同的缩进代表不同的级别,缩进要对齐,空格和tab不能混用(4)区别大小写,键值对k ...
- Hadoop权威指南读书笔记
本书中提到的Hadoop项目简述 Common:一组分布式文件系统和通用I/O的组件与接口(序列化.javaRPC和持久化数据结构). Avro:一种支持高效.跨语言的RPC以及永久存储数据的序列化系 ...
随机推荐
- Flume 实战练习
前期准备 了解Flume 架构及核心组件 Flume 架构及核心组件 Source : 收集(指定数据源从哪里获取) Channel : 聚集 Sink : 输出(把数据写到哪里去) 学习使用 Flu ...
- Redis list实现原理 - 双向循环链表
双向链表 双向表示每个节点知道自己的直接前驱和直接后继,每个节点需要三个域 查找方向可以是从左往右也可以是从右往左,但是要实现从右往左还需要终端节点的地址,所以通常会设计成双向的循环链表; 双向的循环 ...
- 什么是Activiti
什么是Activiti Activiti属于工作流引擎的一个开源实现.Activiti由Tom Bayen发起.在2010年5月发布了第一个版本.命名也很有意思的采取了Activities(活动)的化 ...
- 【Amaple教程】2. 模块
正如它的名字,模块用于amaplejs单页应用的页面分割,所有的跳转更新和代码编写都是以模块为单位的. 定义一个模块 一个模块由<module>标签对包含,内部分为template模板.J ...
- Safari配置WebApp----添加启动图和桌面图标让你的WebApp在ios设备上体验如原生一样
现在很多开发者的Web应用程序的设计样式和交互类似本机应用程序,例如,它的缩放比例适合iOS上的整个屏幕.当用户将其添加到主屏幕时,您可以通过使其看起来像本机应用程序一样,在iOS上为您的Web应用程 ...
- 37个JavaScript基本面试问题和解答
1.使用typeof bar ==="object"来确定bar是否是一个对象时有什么潜在的缺陷?这个陷阱如何避免? 尽管typeof bar ==="object&qu ...
- Java 抽象类 抽象方法 使用说明
知识点 什么是抽象类 抽象类与普通类主要两点不同: 1.在类的修饰符后面多了一个abstract关键字 2.抽象类是不允许通过new来实例化的 由于抽象类不能通过new来实例化,所以基本上是在继承中当 ...
- ZXingObjC直接引用第三方工程使用方法
1.下载ZXingObjc压缩包,解压缩. 2.将文件拷贝到项目工程目录下 3.到工程目录中ZXingObjc文件夹中将ZXing的执行文件拖拽到项目中. 4.点击项目targets ——>Bu ...
- node打开本地应用程序
1.打开浏览器 最简单的方法: const cp = require('child_process') cp.exec('start http://127.0.0.1:8889/'); // 自动打开 ...
- 【BIM】BIMFACE中创建矢量文本[下篇]
背景 在上一篇文章中,我们通过THREEJS创建了矢量文本,并添加到了BIMFACE场景中,但是仅仅加入到场景中并不是我们的目的,我们的目的是把这种矢量文本加到指定的构件或者空间上,以此标识该构件或空 ...