Ansible 安裝與配置(一)

公司大概有200多雲主機須要進行管理,可是若是經過手工管理費時還累最終結果也容易出錯,因此考慮經過自動化的方式來管理雲主機,目前開源的自動化工具,你們用的比較多的有Ansible和Saltstack這兩種,其實還有其餘的只是相對於來講已經沒有這兩個那麼經常使用,我這邊最先接觸到的是ansible因此公司採用了ansible來管理主機,下面咱們介紹下ansible的安裝配置。python

1、環境的準備git

  1.Python2.6+:Ansible 是基於Python開發,因此咱們控制主機須要安裝Python2.6以上版本;github

  2.Jinja2:定義模板的時候使用Jinja2,而Jinja2是Python的現代模板語言;服務器

  3.PyYAML:寫Playbook時候定義的文件類型是ymal,而PyYAML是Python 的一個 YAML 編碼/反編碼函數庫,;ssh

  4.paramiko:Ansible 默認是基於SSH協議通訊,而paramiko純 Python 編寫的 SSHv2 協議函數庫;函數

  5.httplib2:一個功能全面的 HTTP 客戶端函數庫;工具

2、Ansible 安裝測試

 Ansible 默認基於SSH協議通訊,安裝Ansible之後控制主機不須要啓動或者後臺運行任何的Ansible進行,只須要在控制主機安裝Ansible,這樣能夠經過Ansible來管理任何一個被控節點,同時被控節點不須要安裝任何客戶端軟件;ui

  1.源碼安裝編碼

# git clone git://github.com/ansible/ansible.git --recursive
# cd ./ansible
# source ./hacking/env-setup

  2.yum/apt 安裝

yum install ansible
apt-get install ansible

  3.pip安裝

pip install ansible   

  4.檢查下ansible 是否安裝成功

ansible --version

 返回ansbile 版本信息

ansible 2.4.2.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]

  5.Ansible 命令集

ansible                      # 定義ansible 單任務
ansible-config               # 查看、編輯、管理Ansible配置
ansible-doc                  # 文檔查看工具
ansible-galaxy               # 共享、下載roles的工具
ansible-inventory           # 查看Inventory主機信息
ansible-playbook           # 執行playbook
ansible-pull                 # 倉庫中拉去playbook
ansible-vault                # 文件加密、解密工具
ansible-console              # ansible 控制檯

3、配置運行環境

  1.配置Ansible的環境

  運行Ansible命令時,命令將按照預先設定的順序前後查找配置文件

  I.首先Ansible 會檢查環境變量是否設置ANSIBLE_CONFIG,以及檢查變量指向文件的路徑;
  II.檢查當前目錄下是否包含ansible.cfg配置文件;
  III.再次檢查當前用戶的主目錄是否包含ansible.cfg配置文件;
  IV.最後檢查/etc/ansible 目錄下是否包含ansible.cfg配置文件,通常經過軟件管理包(yum/apt)安裝時會自動在etc目錄下生成配置文件;

注意:

  經過pip安裝時候,不會生成完成的ansible.cfg配置文件,此時咱們須要從github倉庫中examples目錄下拷貝ansible.cfg配置文件;

  2.Ansible 主要配置文件

1 /etc/ansible/ansible.cfg     #Ansible 配置文件
2 /etc/ansible/hosts           #主機清單
3 /etc/ansible/roles/          #角色路徑

 4、Ansible Inventory

  實際過程當中咱們須要管理不一樣業務,不一樣環境中的各類服務器資源,這些服務器的信息主要存儲在Inventory 組件裏面,ansible.cfg中默認定義配置文件的路徑/etc/ansible/hosts;

  1.定義主機和主機組

   下面咱們來/etc/ansible/hosts 文件中定義主機和主機組

# Ex 1: 定義主機

    192.168.100.10

# Ex 2:定義 'WebServers' 主機組

[WebServers]
    10.172.139.53
    10.30.49.72
    10.30.49.[1:10]    # 一組相似IP地址簡寫模式

   說明:

    方括號[]中表示的組名字,主要用於不一樣類別的系統進行分類,便於對同一類的服務器資源進行管理;

  2.主機和主機組變量

# 定義主機變量

    10.30.49.72  ansible_port='61821'   #定義ssh遠程端口

# 定義主機組變量
# 下面的變量屬於整個WebServers組
[WebServers:vars]  
    ansible_ssh_pass='ansible'
    ansible_ssh_port='61821'

  3.Inventory 經常使用參數說明

ansible_ssh_host        # 鏈接的遠程主機名.

ansible_ssh_port        # SSH遠程鏈接端口,非標準端口設置.

ansible_ssh_user        # SSH遠程鏈接用戶名

ansible_ssh_pass        # SSH遠程鏈接帳號對應密碼 (這種方式並容易泄露密碼信息,建議使用 --ask-pass或者SSH認證)

ansible_sudo_pass       # sudo用戶密碼(這種方式並容易泄露密碼信息,烈建議使用 --ask-sudo-pass)

5、編寫第一個Ansible 程序

  Ansible 安裝完成之後,咱們基本的瞭解了Ansible的配置方式,下來咱們編寫下第一個Ansible 程序

示例1:測試WebServers 服務器組連通訊
  ansible WebServers
-m ping -o        主機/主機組 模塊
返回結果:   
39.105.0.244 | SUCCESS => {"changed": false, "ping": "pong"}   47.104.149.180 | SUCCESS => {"changed": false, "ping": "pong"}
示例2:WebServers
/opt 目錄下建立ansible.txt文件
  ansible
47.104.149.180 -m file -a "owner=root group=root mode=644 path=/opt/ansible.txt state=touch" -o        主機/主機組 模塊 參數  返回結果:   47.104.149.180 | SUCCESS => {"changed": true, "dest": "/opt/ansible.txt", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "size": 0, "state": "file", "uid": 0}

 經過以上的例子,咱們大概了了解了經過Ansible的命令來管理服務器,具體的模塊信息和參數後面介紹,這裏咱們只是來體會下Ansible的便捷性,這樣咱們完成了Ansible的安裝和配置。

相關文章
相關標籤/搜索