Ansible原理與安裝部署

今天,我們開始學習運維自動化工具Ansible。

一、Ansible原理

1.1 什麼是Ansible

Ansible一種集成IT系統的配置管理、應用部署、執行特定任務的開源平臺/框架。基於Python語言實現,核心模塊包括:jinja2、PyYAML和paramiko。Ansible允許重複執行而不出錯,客戶端無agent,服務端無deamon進程。Ansible特點:

  • Ansible支持API接口調用,例如通過CMDB調用或公有云接口調用

  • Ansible是一個框架,基於模塊、插件工作

  • 基於SSH工作,即被管理端要支持SSH管理

  • 通過playbooks來編寫強大的配置、狀態管理,實現自動化

 

1.2 Ansible重要組件說明

  • 模塊:Ansible由多種功能模塊組成

  • playbook:Ansible劇本,使用yml語法調用不同功能模塊完成特定的功能

  • roles:Ansbiel角色,可以使用ansible-galaxy命令下載第3方的roles角色。

  • ansible-vault:文件加密工具

  • ansilbe-console:基於console與用戶進行交互

  • ansible-doc:幫助文檔,-l所有模塊,-s簡要幫助

     

1.3 Ansible執行過程及原理說明

  1. 加載配置文件,默認是/etc/ansible/ansible.cfg

  2. 加載對應模塊

  3. 生產臨時py文件,並傳輸到目標機器的~/.ansible/tmp目錄下

  4. 給py文件加上+x權限,執行並返回結果

  5. 刪除py文件並sleep 0 退出

 

1.4 Ansible執行狀態說明

  • 綠色:執行成功,不需要做改變

  • 黃色:執行成功,對目標主機做變更

  • 紅色:執行失敗

 

二、Ansible安裝與配置

2.1 安裝Ansible

安裝Ansible,以CentOS 7.6爲例:

 [root@ansible ~]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core) 
    [root@ansible ~]# uname -a
    Linux ansible 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
#配置epel源
    [root@ansible ~]# cat /etc/yum.repos.d/epel-7.repo 
    [epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
    baseurl=http://mirrors.aliyun.com/epel/7/$basearch
    failovermethod=priority
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    [epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
    baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
    failovermethod=priority
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    gpgcheck=0
    [epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
    baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
    failovermethod=priority
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    gpgcheck=0
#安裝Ansible
    [root@ansible ~]# yum install ansible -y
#查看已安裝Ansible版本
    [root@ansible ~]# ansible --version
    ansible 2.8.2
      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.7/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
    [root@ansible yum.repos.d]# 
    ansible-2.8.2-1.el7.noarch

查看Ansible相關文件


yum info ansible
rpm -qa ansible
rpm -ql ansibel | less

2.2 Ansible配置文件

Ansible主要配置文件及作用說明如下:


    /etc/ansible/
    ├── ansible.cfg  # Ansible主配置文件
    ├── hosts  #用來定義被管理的機器清單
    └── roles  #該目錄用於定義角色

Ansible配置文件
/etc/ansible/ansible.cfg主要參數說明


    #關閉過時參數告警
deprecation_warnings=False
    #關閉command告警
command_warnings=False
    #首次連接不檢查,配合下面的playbook實現免密碼ssh登錄
host_key_checking=False
    #設置並行數量
forks=40
    #開啓日誌
log_path = /var/log/ansible.log
    #ssh超時時間
timeout = 30

2.3 hosts主機清單

默認hosts文件/etc/ansible/hosts,被操作的主機必須在hosts主機清單中。


cd /etc/ansible
vim hosts
    #分組
[mons]
    #設置主機別名
ceph-node-1 ansible_ssh_host=172.16.93.1
[client]
172.16.93.1:2222
    #同時也支持域名和主機名,最終解釋到IP
    #支持正則表達式
[kvm_node_all]
172.16.93.[6:9]
    #設置分組主機變量
[kvm_node_all:vars]
ansible_ssh_user=root
ansible_ssh_pass=Efly1234
ansible_ssh_port=22
    #自動義變量
my_name=zhangsan
    #主機的繼承關係,會繼承父的所有變量
[kvm_node_all:children]
client

2.4 Ansible管理機與被管理機做祕鑰認證(可選)


# 生成祕鑰
    ssh-keygen
#生成後會得到下面2個文件
    [root@ansible ~]# tree /root/.ssh/
    /root/.ssh/
    ├── id_rsa
    └── id_rsa.pub
# 將公鑰寫入被管理機
    ssh-copy-id 192.168.199.52
#或
    ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 [email protected]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章