ansible使用心得

ansile作爲去除安裝agent的自動化工具,通過ssh協議的簡單功能強大的自動化工作。

在ansile使用的過程中,有三種使用方式,個有特點。

1、ansible自行一次性任務,即執行命令如:

ansible 10.59.87.11 -m ping
ansible 10.59.87.11 -m copy -a "src=/etc/issue dest=/tmp/"

執行的方式是:
anbile + 執行的主機可以多種方式匹配(默認在./etc/ansible/hosts中)+ -m 模塊 -a "模塊的屬性"

2、ansible-playbook 執行方式,將任務都寫在一個yml文件中,yaml文件可簡單可複雜

如執行:ansible-playbook /tmp/scp.yml

等於 ansible 10.59.87.11 -m copy -a "src=/etc/issue dest=/tmp/" 這個效果,yml文件內容如下


- hosts: 10.59.87.11
  remote_user: root
  vars:
    var_has: none
  tasks:
  - name: scp issue file
    copy:
      src: /etc/issue
      dest: /tmp/

注意:
1、hosts 指定的主機或者主機組一定要在/etc/ansible/hosts中或者通過-i 指定的inventory 文件中
2、如果裏面用到template模塊,則模塊的路徑需要在執行的$(dirname /tmp/scp.yml ) 目錄下的templates 目錄下
3、如果是有notify的使用,handlers可以是目錄也可以是直接 handlers關鍵字指定

ansible-playbook 常用的選項
-C, --check
--verbose 執行顯示詳情
--syntax-check 語法檢查
-D 打印更改的diff
--list-hosts
--list-tags
--list-tasks
-i INVENTORY, --inventory-file=INVENTORY 默認在 /etc/ansible/hosts 文件中

來一個httpd的安裝的yml文件

- hosts: 10.59.87.11
  remote_user: root
  vars:
    httpd_port: 80
  tasks:
  - name: ensure apache is at the latest version
    yum:
      name: httpd
      state: latest
  - name: install configure file
    template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
    notify: reload httpd
  - name: stop httpd servcie
    service: name=httpd state=stopped
    tags:
        - stop

  handlers:
  - name: reload httpd
    service: name=httpd state=reloaded

cat templates/httpd.conf.j2 (查看jinjia2文件)

3、ansible-playbook + roles 方式
如果使用ansible管理公司服務器的配置初始化服務,這種模式是必須的,是分模塊管理的。

ansible的目錄結構:
ansible使用心得

標紅的是常用的。

如:生產環境中的一個nginx模塊roles
ansible使用心得

roles的目錄是通過 /etc/ansible/ansible.cfg 文件決定的,默認是在roles_path = /etc/ansible/roles

如:

- hosts: web-group
  tags:
    - hosts
  roles:
    - hosts

如執行:
ansible-playbook /etc/ansible/top.yml

會對web-group的主機執行roles問hosts下的yml文件。 hosts roles目錄下默認會找tasks目錄下的main.yml文件。
main.yml文件中通過include,導入tasks目錄下的其他.yml文件。

關於ansile的變量的優先級。
ansible變量優先級高低(從高往低):
ansible-playbook 執行yml任務的時候-e 參數指定的變量
ansible-playbook yml文件中vars: 中定義的變量
inventory 中host後面跟的變量定義的變量
inventory 中[:vars]中全局組定義的變量

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