星期六, 4月 21, 2018

利用 Ansible playbook 建立 azure 與 ansible套件於 openSUSE & Ubuntu Linux

利用 Ansible playbook 建立 azure 與 ansible套件於 openSUSE & Ubuntu Linux

之前的文章在測試  Azure Dynamic Inventory 的時候, azure 與 ansible 環境是手動建立的.

所以順手寫了一個 azure_install.yml 的 playbook
  • 針對 hosts 檔案內的群組[ AzureHost ]  進行相關套件安裝, 所以只要把主機加入該群組就好

處理內容如下
  • 安裝 Azure python SDK
  • 安裝 ansible 套件然後不能跟 python 衝突( 符合 python 套件需要 )
  • 下載 azure_rm.py
  • 建立空檔案 ~/.azure/credentials 方便日後輸入認證資訊


azure_install.yml 檔案內容如下

---
#########################################################  
# Install docker package and setup boot
- name: use when conditionals and setup module (facts)
 hosts: all
 tasks:
# 使用 setup moudule 列出 OS 種類
   - name: use setup module to list os distribution
# setup moudle 可以使用 filter 過濾相關內容
     setup: filter=ansible_distribution


#########################################################  

- name: Install python-pip and azure package
# use group
 hosts: AzureHost
#  sudo: True
 become: True
 tasks:
   - name: Install python-pip with openSUSE Leap
# 這邊使用 disable_recommends=no 加入zypper 建議的套件, 否則不會加入 apache2等其他套件
# 這邊使用 disable_gpg_check=yes, 讓公有雲例如 azure上面的額外 repo 不用check gpg key
     zypper: name={{ item }} disable_recommends=no disable_gpg_check=yes
     with_items:
       - python-pip
       - curl
       - wget
       - sshpass
     when: ansible_distribution == "openSUSE Leap"

   - name: Install python-pip with Ubuntu
     apt: name={{ item }} update_cache=yes
     with_items:
       - python-pip
       - curl
       - wget
       - sshpass
     when: ansible_distribution == "Ubuntu"

   - name: upgrade pip version
     pip:
       name: pip
       state: latest
# 這邊透過 executable 來指定使用 pip2, 不然預設是 pip3
       executable: pip2   

   - name: install ansible[azure] with pip
     pip:
       name: ansible[azure]
# 這邊透過 executable 來指定使用 pip2, 不然預設是 pip3
       executable: pip2   

# 下載 azure_rm.py, 以便日後 Dynamic Inventory 使用
   - name: get azure_rm.py to root home
     get_url:
       url: https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py
       dest: /root/azure_rm.py
       mode: 0551
# 建立 ~/.azure 目錄
   - name: create ~/.azure folder
     file:
       path: ~/.azure
       state: directory
# 建立 ~/.azure/credentials 檔案,之後要存放 azure 認證檔案
   - name: create ~/.azure/credentials
     file:
       path: ~/.azure/credentials
       state: touch

#-------------------------------------------------------  


執行方式

如果是在 Azure 上面的 VM 執行
$ ansible-playbook   --ask-pass  --ask-become-pass  -u  使用者名稱   azure_install.yml

如果是一般 VM 可能就可以直接用 root 連接, 不用 --ask-become-pass :)

偷懶戰鬥力 又偷偷 + 1

~ enjoy it

Reference:

沒有留言: