星期三, 6月 07, 2017

ansible with ceph RBD client and openSUSELeap42.2小記

ansible with ceph RBD client and openSUSELeap42.2小記

昨天嘗試 Ceph RBD client 掛載with openSUSE Leap 42.2
今天將昨天的東西寫成 ansible playbook

OS: openSUSE Leap 42.2



一樣透過 群組的方式來控管

作法很簡單
將 ceph_rbd_client 目錄以及底下的檔案下載或是複製到有 ansible 的機器
將 要掛載的機器 ip 還有相關資訊增加到 hosts 檔案內, 並加入到 [ cephRbdClient ]

準備好
  • Ceph server IP
  • Ceph 的 id
  • Ceph 的 key
  • RBD pool 以及 image 名稱

執行
#ansible-playbook   ceph_rbd_client_install.yml


因為透過群組控管所以 hosts 檔案內容如下

# syntax: servername  options
# ansible_host -- Remote Host IP
# ansible_user -- Remote SSH User Name
# ansible_ssh_private_key_file -- SSH Key
# ansible_ssh_pass -- SSH Password for remote host
# ansible_port -- Remote SSH port
# testserver   ansible_host=xxx.xxx.xxx.xxx   ansible_user=root   ansible_ssh_private_key_file=



#### Group List ###########################
[cephRbdClient]
testserver

相關設定檔使用 template 模組來控制, 透過變數來使用
所以在 templates 目錄下準備兩個檔案

templates/ceph.conf 檔案內容如下

[global]
mon host = {{ ceph_mon_host }}


templates/keyring 檔案內容如下

[client.{{ ceph_id }}]
     key = {{ ceph_key }}


接下來看 playbook 的 yaml 檔案主體

ceph_rbd_client_install.yml 檔案內容如下

---
#########################################################  
# 20170607 edit by sakana
- 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 ceph-common packages and setup
# 使用群組方式安裝 ceph-common套件, 請配合 hosts 內的 [cephRbdClient]
 hosts: cephRbdClient
 become: True
# 透過提示來輸入相關變數
 vars_prompt:
    - name: "ceph_mon_host"
      prompt: "Enter ceph mon host IP"
# private 設定為 no 會顯示輸入的內容
      private: no
# 這邊可以設定預設值

    - name: "ceph_id"
      prompt: "Enter your ceph id"
      private: no
#       default:

    - name: "ceph_key"
      prompt: "Please paste your ceph key"
      private: no

    - name: "pool_image_name"
      prompt: "Please input your pool/image name, like rbd/test"
      private: no
      default: "rbd/test"


 tasks:
   - name: Install ceph-common with openSUSE Leap
# 這邊使用 disable_recommends=no 加入zypper 建議的套件, 否則不會加入建議的其他套件
     zypper: name={{ item }} disable_recommends=no
     with_items:
       - ceph-common
     when: ansible_distribution == "openSUSE Leap"

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

# 設定 /etc/ceph/ceph.conf 檔案
   - name: set /etc/ceph/ceph.conf
     template: src=templates/ceph.conf dest=/etc/ceph/ceph.conf

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

# 設定 keyring
   - name: set up keyring
     template: src=templates/keyring dest=/etc/ceph/ceph.client.{{ceph_id}}.keyring

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

# 進行 rbd map
   - name: map rbd image
     shell: rbd  --id  {{ceph_id}} map {{pool_image_name}}

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

# 檢查 rbd map images
   - name: check rbd map images
     shell: rbd --id {{ceph_id}} showmapped

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

# 進行 /dev/rbd0 格式化 xfs
   - name: use mkfs.xfs to create xfs with /dev/rbd0
     shell: mkfs.xfs  -f  /dev/rbd0

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



# 透過 mount module 掛載 /dev/rbd0 到 /mnt/rbd0 並修改 /etc/fstab
# 使用 file module 的好處是可以同時處理 /etc/fstab
   - name: mount /dev/rbd0 to /mnt/rbd0
     mount: src=/dev/rbd0 name=/mnt/rbd0 state=mounted fstype=xfs

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

# 設定 /etc/ceph/rbdmap
   - name: set up /etc/ceph/rbdmap
#    2.3 以前的版本不可以使用 path
#      lineinfile: path=/etc/ceph/rbdmap line='{{pool_image_name}}  id={{ceph_id}},keyring=/etc/ceph/ceph.client.{{ceph_id}}.keyring'
     lineinfile: name=/etc/ceph/rbdmap line='{{pool_image_name}}  id={{ceph_id}},keyring=/etc/ceph/ceph.client.{{ceph_id}}.keyring'

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

# 設定 rbdmap 啟動與開機啟動
   - name: Set rbdmap enable and run
     service: name=rbdmap state=started enabled=yes

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





沒有留言: