ansible運維自動化工具

                                        ansible運維自動化工具                                         php

軟件包的安裝
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install ansible -y
配置免密鑰
在master服務器生成ssh-key,並分發到全部客戶端
ssh-keygen -t rsa  【一路回車】
ssh-copy-id -i ~/.ssh/id_rsa.pub【客戶端IP地址】

配置安裝完成以後,先來配置下配置項——.ansible.cfg。ansible執行的時候會按照如下順序查找配置項:

* ANSIBLE_CONFIG (環境變量) html

* ansible.cfg (當前目錄下) web

* .ansible.cfg (用戶家目錄下) shell

* /etc/ansible/ansible.cfgvim

 

默認ansible執行時會從該配置中加載hosts配置,所以能夠經過修改.ansible.cfg來指定默認的hosts文件地址:服務器

 

[defaults]
hostfile=/Users/the5fire/hosts


有幾個參數須要記錄下:
-u username # 指定ssh鏈接的用戶名
-f 10 # 指定併發數
--sudo [-K] # 若是須要root權限執行的話,-K參數是用來輸入root密碼的

定義hosts文件:併發

ansible的hosts默認在/etc/ansible/目錄中,其中提示ansible是支持域名和ip兩種客戶端命名格式的,在這裏定義了一個「slave」組 vim /etc/ansbile/hosts [slave]app

192.168.17.18
192.168.17.19
vim /etc/ansible/hosts  
方法一: [webhosts]
172.16.10.22 ansible_ssh_user=root ansible_ssh_pass=guoting 172.16.10.33 ansible_ssh_user=root ansible_ssh_pass=guoting
方法二:
[GameServer]
Android1-2 ansible_ssh_host=10.10.113.31 ansible_ssh_user=joy ansible_ssh_port=888
Android3-4 ansible_ssh_host=10.10.243.59 ansible_ssh_user=joy ansible_ssh_port=888
IOS1-2 ansible_ssh_host=10.10.240.248 ansible_ssh_user=joy ansible_ssh_port=888
Tencent1-2 ansible_ssh_host=10.10.243.67 ansible_ssh_user=joy ansible_ssh_port=888 解釋 ansible_ssh_user
=root 是ssh登錄用戶 ansible_ssh_pass=guoting 是ssh登錄密碼三、測試各個模塊
# 注意每一個模塊的用法可使用 ansible
-doc MOD 來查看例如ansible-doc copy ansible命令最經常使用的用法 ansible <Host-partten> -m MOE -a 'MOD_ARV'所支持的模塊可使用ansible-doc -l來查看
 
 
 

上面的ad hoc是指執行一條臨時的不須要保存的命令,那麼複雜的命令怎麼執行呢?所以也就有了playbook這個命令: ansible-playbook 。運維

playbook(劇本),就是須要定義一個腳本或者說配置文件,而後定義好作什麼。ssh

ymal中的變量:

在 yaml 中可使用vars關鍵字來定義變量  

vars:  

var_name: value

例子:

變量的引用  

{{ var_name }}  

 

例子:

添加 2 個用戶  
   
方式1通常作法  
- name: add user testuser1  
user: name=testuser1 state=present groups=wheel 
- name: add user testuser2  
user: name=testuser2 state=present groups=wheel 
   
方式2使用變量方式  
- name: add several users  
vars:  
user1: testuser1  
user2: testuser2  
user: name={{ user1 }} state=present groups=wheel 
user: name={{ user2 }} state=present groups=wheel 
   
方式3使用迭代方式  
- name: add several users  
user: name={{ item }} state=present groups=wheel 
with_items:   
- testuser1   
- testuser2  
事實上with_items中可使用元素還可爲hashes例如  
- name: add several users  
user: name={{ item.name }} state=present groups={{ item.groups }}  
with_items:  
- { name: 'testuser1', groups: 'wheel' }  
- { name: 'testuser2', groups: 'root' } 

 

例子:把當前用戶名輸出到whoami.rst文件中:

cat /etc/ansible/playbook.yml
---
- hosts: slave  # hosts文件中定義的組
  remote_user: root  # 若是和當前用戶同樣,則無需指定
  tasks:  # tasks是是關鍵詞,指明瞭要執行哪些任務
    - name: whoami # name是任務的名稱
      shell: 'whoami > whoami.rst' # shell是指定使用的module(模塊),單引號中是命令。

- hosts: slave
  remote_user: root
  tasks:
      - name: whoami
        copy: src=~/hosts dest=~/hosts.dest  #  本地拷貝到遠端
        notify: # 若是copy執行完以後~/hosts.dest文件發送了變化,則執行 - clear copy 
  handlers:
      - name: clear copy  # 調用handler
        shell: 'mv ~/hosts.dest hosts.del'  # 重命名

 或

cat playbook.yml

- hosts: slave
  remote_user: root
  tasks:
      - name: whoami
        copy: src=~/hosts dest=~/hosts.dest

      - name: clear copy
        shell: 'mv ~/hosts.dest hosts.del'
相關文章
相關標籤/搜索