Ansible權威指南-讀書筆記

2 Ansible基礎元素介紹

2.1 ansible 目錄結構介紹

2.2 ansible 配置文件解析

配置文件解析順序:當前命令執行目錄-->用戶家目錄下的.ansible.cfg-->/etc/ansible.cfgnode

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
運行該腳本時,就不會在執行的遠程主機上收集系統性信息python

---
- 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

一些經常使用的選項linux

  • edit
  • rekey:從新修改已被加密文件密碼
  • create: 建立一個新的文件,並直接對其進行加密
  • view:查看通過加密的文件
  • decrypt: 解密文件
ansible-vault encrypt sample.yml
ansible-playbook test.yml --vault-password-file /PATH/TO/PASSWD.txt

注意 :python的cryptography模塊會加速vault的速度git

5.3.8 變量優先級(由高到低)

  1. 在命令剛中定義的變量(即便用-e定義的變量)
  2. 在Inventory中定義的鏈接變量(例如:ansible_ssh_user)
  3. 大多數的其餘變量(命令行轉換,play中的變量,included變量,role中的變量等)
  4. 在Inventory定義的其餘變量
  5. 由系統經過gather_facts方法發現的變量
  6. role默認變量,這是一個默認值,很容易喪失優先權

5.4 if/then/when---流程控制

5.4.1 Jinja2正則表達,python內置函數和邏輯判斷

能夠藉助python的一些內置方法,大大加強了ansible的功能web

5.4.1.1 jinja2數據類型

  • 字符串型 string
  • 整數型 45
  • 浮點數型 42.33
  • 列表 [1,2,3]
  • 元組 (1,2,3)
  • 字典 {key:value}
  • 布爾型 truefalse

5.4.1.2 jinja2支持的數據運算

  • 基本數據運算 加減乘除,比較運算==,!=,>=
  • 邏輯運算 and,or,not
  • defined,undefined,equalto,even,iterable

5.4.2 變量註冊器register

註冊變量的四種類型sql

  • changed 任務是否對遠程主機形成的變動
  • delta 任務運行所用的時間
  • stdout 正常的輸出時間
  • stderr 錯誤信息

使用的方式shell

- 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塊

相關文章
相關標籤/搜索