设为首页 收藏本站
查看: 1335|回复: 0

[经验分享] Ansible权威指南

[复制链接]

尚未签到

发表于 2018-1-2 15:43:18 | 显示全部楼层 |阅读模式
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变量
  

[iyunv@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
  
}
  
[iyunv@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块

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430855-1-1.html 上篇帖子: python自动化运维八:Ansible 下篇帖子: 4.1、Ansible模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表