2021年2月21日 星期日

Ansible筆記(一)-環境建立

    Ansible是一個自動化大量佈署的軟體, 它不用另外在被佈署的主機上安裝Agent端程式,只要在發送端安裝Ansible程式即可,在CentOS 7如果要用Ansible則需要另外安裝Epel-release(目前在7版上的Ansible支援到2.9版)

    Ansible主要的設定主要是“ansible.cfg"及"inventory",”*.yaml“,3大設定所組成(以下會用一些範例說明會比較清楚一些)

          >  ansible.cfg  定義了執行權限,Inventory的路徑
          >  Inventory  定義了主機的群組
          >  *.yaml  定義佈署的模組及動作,例如yum模組,就是拿來安裝套件的

    也就是說*.yaml就是你的劇本(一堆模組),Inventory就是你的演員(主機包含主機群組),ansible.cfg就是定義誰是導演,ansible-playbook(指令)執行劇本的人員!

佈署架構及環境需求

    servera -->Ansible發送端
    serverb
    serverc

1.每一台主機都需要一個可以佈署的系統帳號,例如使用"ansible"這個user並設定密碼

    #useradd ansible 
    #echo "ansible"| passwd --stdin ansible

2.每一台主機都要設定為了安全性問題,需將ansible user加入sudoers權限

    #cat << EOF > /etc/sudores.d/ansible
    >ansible  ALL=(ALL)  NOPASSWD: ALL
    >EOF

3.由ServerA的ansible這個user交換金鑰給其他被佈署的Server (如果碰到大量主機需要交換金鑰時可以參考這篇文章的做法http://linux.rhce.taipei/2020/08/sshpass-ssh.html)

    [servera]# su - ansible
    [servera]$ ssh-keygen
    [servera]$ ssh-copy-id ansible@serverb;
ssh-copy-id ansible@serverc

        *以上都可以用for迴圈的方式建立(我懶得寫啦!!)

4.安裝ansible程式

    [servera] #yum install -y epel-release;yum install -y ansible

5.開始使用Ansible建立一個佈署資料夾名為ansible-test,Ansible的基本設定檔“ansible.cfg"分別會依下面的順序載入,注意喔這是有順序的!

    1. /path/to/your/ansbile.cfg  -->自定的ansible.cfg的路徑
    2. ./ansible.cfg  -->執行Inventory的那個目錄
    3. ~/.ansible.cfg -->執行Inventory的User的Home目錄
    4. /etc/ansible/ansible.cfg  -->預設的cfg目錄

以下為基本的ansible.cfg,意思是最少只需要以下內容即可以處理大部分的Playbook的執行

    [servera]$ mkdir ansible-test
    [servera]$ cd ansible-test
    [servera ansible-test\]$ vi ansible.cfg

        [defaults]
        inventory = ./inventory       --inventory的目錄
        remote_user = ansible         --就是誰是這場戲的導演,就是每台主機都要有這個user
        ask_pass = [ true | flase ]     --執行Playbook的過程中是否詢問密碼

        [privilege_escalation]
        become = [ true | false ]      --是否開啟提升權限功能
        become_method = sudo      --提升權限的方法是用sudo
        become_user = root            --提升權限後遠端主機變成誰,例如是root
        become_ask_pass = [ true | false ]    --
執行Playbook的過程中是否詢問密碼

資料來源 >

    以前讀書的筆記!

沒有留言:

張貼留言