ansible-進階1


1 條件判斷
場景1 需要獲取一個結果注入一個變量,然後針對變量值進行判斷 && 在playbook中可以使用register將捕獲命令的輸出保存在臨時變量中,然後使用debug模塊進行顯示輸出&&最後通過when進行判斷
 when條件統一判斷條件 not var.stat.exists
   - name: prepare | Check if MySQL file is already configured.
     stat:
      path: "{{ mysql_file_path }}"
    register: mysql_file_result
    debug:
       var: mysql_file_result
   - name: prepare | Create software files path.
     file:
      path: "{{ mysql_pkg_path }}"
      state: directory
     when: not mysql_file_result.stat.exists

場景2 針對已有變量進行直接判定,變量是預定義好的
   - name: install|cnf
     shell: sed -i "s/read_only.*.OFF/read_only=ON/g" /home/work/mysql/etc/my.cnf && sed -i "s/server-id.*.=1/server-id=2/g" /home/work/mysql/etc/my.cnf
     when: mysql_replication_role == 'slave'
2 變量
  來源:變量分爲傳入變量和預定義變量兩種,前者通過執行命令傳入,後者在文件中統一定義後,其他地方直接引用變量名即可
 下面這個就是定義好的變量名和值 註冊進入
1 在yaml中定義
- hosts: 127.0.0.1
gather_facts: no
vars:
nginx_port: 8080
delay_seconds: 3
tasks:
接下來就是roles的定義與使用,分爲兩種
   1 是入口的yml,和普通的yml定義一樣.直接定義關鍵字vars即可
   2 是內部的預定義變量,這裏要注意,是有指定的文件夾和文件的
2 示例-我們發現,已經不用vars進行代替了,值也可以是其他變量
roles/comm_mysql/defaults/main.yml
---
mysql_version: "5.7.30"
mysql_pkg_path: "/opt/software"
mysql_install_path: "/usr/local"
mysql_bin_file: "mysql-boost-{{ mysql_version }}-bin.tar.gz"
3 handlers和notify
   1 hanlers其實算成另一種形式的tasks,主要是用來做觸發動作,和task是對齊的
   2 niotify在task裏調用,調用名爲handlers的task_name
經典場景就是:當配置文件更改需要重啓服務時
案例
- name: stup web server
hosts: dev
tasks:- name: copy apache index.html
copy:
src: index.html
dest: /var/www/html/index.html
notify:
- restart httpd  # 調用handler,只有在該Task狀態爲Change時纔會觸發Handler。

handlers:
- name: restart httpd
service:
name: httpd
enabled: true
state: restarted

4  合併

1 shell命令合併 &&

2  可以採用{{item}} loop 創建文件文件夾 YUM安裝(後續補充驗證) 

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