Ansible--初始ansible

1、ansible簡介nginx

ansible是一種自動化運維工具。實現批量操做系統配置、批量程序部署、批量命令運行等功能。web

ansible工做在agentless模式下,而且具備冪等性(冪等性不會重複執行相同指令,例如不會重複安裝軟件,當你但願一個文件中存在一行內容爲 "aaaaaa", 若是不存在就會插入,若是存在就會跳過)。apache

ansible架構大體以下:數據結構

2、基本使用架構

一、定義Host Inventory   /etc/ansible/hostsless

[webhosts]運維

172.16.10.22 ansible_ssh_user=root ansible_ssh_pass=passwdssh

172.16.10.33 ansible_ssh_user=root ansible_ssh_pass=passwd工具

## ansible_ssh_user=root 是登錄用戶操作系統

## ansible_ssh_pass=passwd 是ssh登錄密碼

## 使用 ansible-doc MOD 查看模塊的用法,例如 ansible-doc copy

2.示例使用

查看時間信息

添加用戶,user模塊

安裝軟件和啓動服務

支持管道服務

3、YAML語言介紹

YAML是一種可讀性高的用來表達資料序列的格式。

YAML Ain't Markup Language即YAML不是XML。

YAML的可讀性好

YAML和腳本語言的交互性好

YAML使用實現語言的數據類型

YAML有個一致的信息模型

YAML表達能力強擴展性好

1. YAML 簡介

*********************************************YAML語法

YAML語法能夠簡單表達清單、散列表、標量等數據結構。其結構Structure經過空格展現,序列Sequence的項用「-」來表明

Map裏的鍵值對用「:」分割。下面是一個示例:

name: Jonh Smith

age: 41

gender: Male

YAML 2個重要的結構組成部分list和directory

********************************************list

列表的全部元素均使用「-」開始,例如:

- Apple

- Orange

- Strawberry

- Mango

********************************************dictionary

字典經過key與value標識,例如:

---

name: Example Developer

job: Developer

skill: Elite

也能夠將key:value放置於{ }進行表示,例如:

---

{name: Example Developer, job: Developer, skill: Elite}

2.YAML的變量

########################### 變量命名

變量名僅支持字母、數字和下劃線而且只能以字母開頭

facts 是由正在通訊的遠程目標主機發回的信息,這些信息保存在ansible變量中。獲取facts可以使用以下命令:

# ansible webservers -m setup

########################### 自定義變量

使用關鍵字vars來定義變量

vars:

var_name: value

########################### 變量引用

{{ var_name }}

######################### 變量迭代

 當須要重複執行任務時使用迭代機制,使用格式爲:將須要迭代的內容定義爲item變量引用,並經過with_items語句指明迭代的元素列表。

例如:

- name: add several users

vars:

user1: testuser1

user2: testuser2

user: name={{ user1 }} state=present group=wheel

user: name={{ user2 }} state=present group=wheel

 使用迭代方式:

- name: add several users

user: name={{item.name}} state=present groups={{item.groups}}

with_items:

- { name: 'testuser1', groups: 'wheel' }

- { name: 'testuser2', groups: 'root' }

 3. Invetory格式

inventory文件遵循INI文件風格(括號中的字符串爲組名)。能夠將同一個主機同時歸併到不一樣的組中,當目標主機使用非默認的SSH端口,還能夠在主機名稱以後使用冒號加端口來代表。

[webservers]

www1.webserver.com:2222

www2.webserver.com

############################主機變量

能夠在inventory中定義主機時,添加主機變量以便於在playbook中使用,例如

www1.webserver.com http_port=80 maxRequestPerChild=808

############################ 組變量

組變量是賦予制定組內全部主機的playbook可用的變量。例如:

[webservers]

www1.webserver.com

www2.webserver.com

[webservers:vars]

ntp_server=ntp.webserver.com

nfs_server=nfs.webserver.com

############################  組嵌套

inventory中組能夠包含其餘的組,而且也能夠向組中的主機指定變量。

[apache]
httpd1.magedu.com
httpd2.magedu.com

[nginx]
ngx1.magedu.com
ngx2.magedu.com

[webservers:children]
apache
nginx

############################  inventory參數

ansible_ssh_host # 主機名

ansible_ssh_port # 端口號,默認22

ansible_ssh_user # ssh鏈接時默認用的用戶名

ansible_ssh_pass # ssh鏈接時的密碼

 

4. playbooks

############################ Hosts和Users

相關文章
相關標籤/搜索