真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

什么是Ansible劇本

小編給大家分享一下什么是Ansible劇本,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)公司 - 西信服務(wù)器托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機,成都云主機,西南云主機,西信服務(wù)器托管,西南服務(wù)器托管,四川/成都大帶寬,機柜大帶寬,四川老牌IDC服務(wù)商

劇本playbook比點對點命令模式更強大,而且完全不同。

它使用了 /usr/bin/ansible-playbook 二進制文件,并且提供豐富的特性使得復(fù)雜的任務(wù)變得更容易。

如果你想經(jīng)常運行一個任務(wù),劇本是非常有用的。此外,如果你想在服務(wù)器組上執(zhí)行多個任務(wù),它也是非常有用的。

劇本是由 YAML 語言編寫。YAML 代表一種標(biāo)記語言,它比其它常見的數(shù)據(jù)格式(如 XML 或 JSON)更容易讀寫。

下面這張 Ansible 劇本流程圖將告訴你它的詳細(xì)結(jié)構(gòu)。

什么是Ansible劇本

理解 Ansible 劇本的術(shù)語

  • 控制節(jié)點Control node

    :Ansible 安裝的機器,它負(fù)責(zé)管理客戶端節(jié)點。

  • 受控節(jié)點Managed node

    :控制節(jié)點管理的主機列表。

  • 劇本playbook

    :一個劇本文件包含一組自動化任務(wù)。

  • 主機清單Inventory

    :這個文件包含有關(guān)管理的服務(wù)器的信息。

  • 任務(wù)Task

    :每個劇本都有大量的任務(wù)。任務(wù)在指定機器上依次執(zhí)行(一個主機或多個主機)。

  • 模塊Module

    : 模塊是一個代碼單元,用于從客戶端節(jié)點收集信息。

  • 角色Role

    :角色是根據(jù)已知文件結(jié)構(gòu)自動加載一些變量文件、任務(wù)和處理程序的方法。

  • 動作Play

    :每個劇本含有大量的動作,一個動作從頭到尾執(zhí)行一個特定的自動化。

  • 處理程序Handler

    : 它可以幫助你減少在劇本中的重啟任務(wù)。處理程序任務(wù)列表實際上與常規(guī)任務(wù)沒有什么不同,更改由通知程序通知。如果處理程序沒有收到任何通知,它將不起作用。

基本的劇本是怎樣的?

下面是一個劇本的模板:

---                                [YAML 文件應(yīng)該以三個破折號開頭]- name:                            [腳本描述]  hosts: group                     [添加主機或主機組]  become: true                     [如果你想以 root 身份運行任務(wù),則標(biāo)記它]  tasks:                           [你想在任務(wù)下執(zhí)行什么動作]    - name:                        [輸入模塊選項]      module:                      [輸入要執(zhí)行的模塊]        module_options-1: value    [輸入模塊選項]        module_options-2: value        .        module_options-N: value

如何理解 Ansible 的輸出

Ansible 劇本的輸出有四種顏色,下面是具體含義:

  • 綠色ok 代表成功,關(guān)聯(lián)的任務(wù)數(shù)據(jù)已經(jīng)存在,并且已經(jīng)根據(jù)需要進行了配置。

  • 黃色changed 指定的數(shù)據(jù)已經(jīng)根據(jù)任務(wù)的需要更新或修改。

  • 紅色FAILED 如果在執(zhí)行任務(wù)時出現(xiàn)任何問題,它將返回一個失敗消息,它可能是任何東西,你需要相應(yīng)地修復(fù)它。

  • 白色:表示有多個參數(shù)。

為此,創(chuàng)建一個劇本目錄,將它們都放在同一個地方。

$ sudo mkdir /etc/ansible/playbooks

劇本-1:在 RHEL 系統(tǒng)上安裝 Apache Web 服務(wù)器

這個示例劇本允許你在指定的目標(biāo)機器上安裝 Apache Web 服務(wù)器:

$ sudo nano /etc/ansible/playbooks/apache.yml ---- hosts: web  become: yes  name: "Install and Configure Apache Web server"  tasks:    - name: "Install Apache Web Server"      yum:        name: httpd        state: latest    - name: "Ensure Apache Web Server is Running"      service:        name: httpd        state: started
$ ansible-playbook apache1.yml

什么是Ansible劇本

如何理解 Ansible 中劇本的執(zhí)行

使用以下命令來查看語法錯誤。如果沒有發(fā)現(xiàn)錯誤,它只顯示劇本文件名。如果它檢測到任何錯誤,你將得到一個如下所示的錯誤,但內(nèi)容可能根據(jù)你的輸入文件而有所不同。

$ ansible-playbook apache1.yml --syntax-check ERROR! Syntax Error while loading YAML.  found a tab character that violate indentationThe error appears to be in '/etc/ansible/playbooks/apache1.yml': line 10, column 1, but maybe elsewhere in the file depending on the exact syntax problem.The offending line appears to be:        state: latest^ hereThere appears to be a tab character at the start of the line. YAML does not use tabs for formatting. Tabs should be replaced with spaces.For example:    - name: update tooling      vars:        version: 1.2.3# ^--- there is a tab there.Should be written as:    - name: update tooling      vars:        version: 1.2.3# ^--- all spaces here.

或者,你可以使用這個 URL YAML Lint 在線檢查 Ansible 劇本內(nèi)容。

執(zhí)行以下命令進行“演練”。當(dāng)你運行帶有 --check 選項的劇本時,它不會對遠(yuǎn)程機器進行任何修改。相反,它會告訴你它將要做什么改變但不是真的執(zhí)行。

$ ansible-playbook apache.yml --check PLAY [Install and Configure Apache Webserver] ******************************************************************** TASK [Gathering Facts] *******************************************************************************************ok: [node2.2g.lab]ok: [node1.2g.lab] TASK [Install Apache Web Server] *********************************************************************************changed: [node2.2g.lab]changed: [node1.2g.lab] TASK [Ensure Apache Web Server is Running] ***********************************************************************changed: [node1.2g.lab]changed: [node2.2g.lab] PLAY RECAP *******************************************************************************************************node1.2g.lab               : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0node2.2g.lab               : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

如果你想要知道 ansible 劇本實現(xiàn)的詳細(xì)信息,使用 -vv 選項,它會展示如何收集這些信息。

$ ansible-playbook apache.yml --check -vv ansible-playbook 2.9.2  config file = /etc/ansible/ansible.cfg  configured module search path = ['/home/daygeek/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']  ansible python module location = /usr/lib/python3.8/site-packages/ansible  executable location = /usr/bin/ansible-playbook  python version = 3.8.1 (default, Jan  8 2020, 23:09:20) [GCC 9.2.0]Using /etc/ansible/ansible.cfg as config file PLAYBOOK: apache.yml *****************************************************************************************************1 plays in apache.yml PLAY [Install and Configure Apache Webserver] **************************************************************************** TASK [Gathering Facts] ***************************************************************************************************task path: /etc/ansible/playbooks/apache.yml:2ok: [node2.2g.lab]ok: [node1.2g.lab]META: ran handlers TASK [Install Apache Web Server] *****************************************************************************************task path: /etc/ansible/playbooks/apache.yml:6changed: [node2.2g.lab] => {"changed": true, "msg": "Check mode: No changes made, but would have if not in check mode", "rc": 0, "results": ["Installed: httpd"]}changed: [node1.2g.lab] => {"changed": true, "changes": {"installed": ["httpd"], "updated": []}, "msg": "", "obsoletes": {"urw-fonts": {"dist": "noarch", "repo": "@anaconda", "version": "2.4-16.el7"}}, "rc": 0, "results": []} TASK [Ensure Apache Web Server is Running] *******************************************************************************task path: /etc/ansible/playbooks/apache.yml:10changed: [node1.2g.lab] => {"changed": true, "msg": "Service httpd not found on host, assuming it will exist on full run"}changed: [node2.2g.lab] => {"changed": true, "msg": "Service httpd not found on host, assuming it will exist on full run"}META: ran handlersMETA: ran handlers PLAY RECAP ***************************************************************************************************************node1.2g.lab               : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0node2.2g.lab               : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

劇本-2:在 Ubuntu 系統(tǒng)上安裝 Apache Web 服務(wù)器

這個示例劇本允許你在指定的目標(biāo)節(jié)點上安裝 Apache Web 服務(wù)器。

$ sudo nano /etc/ansible/playbooks/apache-ubuntu.yml ---- hosts: web  become: yes  name: "Install and Configure Apache Web Server"  tasks:    - name: "Install Apache Web Server"      yum:        name: apache2        state: latest     - name: "Start the Apache Web Server"      service:        name: apaceh3        state: started     - name: "Enable mod_rewrite module"      apache2_module:        name: rewrite        state: present       notify:      - start apache   handlers:    - name: "Ensure Apache Web Server is Running"      service:        name: apache2        state: restarted        enabled: yes

劇本-3:在 Red Hat 系統(tǒng)上安裝軟件包列表

這個示例劇本允許你在指定的目標(biāo)節(jié)點上安裝軟件包。

方法-1:

$ sudo nano /etc/ansible/playbooks/packages-redhat.yml ---- hosts: web  become: yes  name: "Install a List of Packages on Red Hat Based System"  tasks:    - name: "Installing a list of packages"      yum:        name:          - curl          - httpd          - nano          - htop

方法-2:

$ sudo nano /etc/ansible/playbooks/packages-redhat-1.yml ---- hosts: web  become: yes  name: "Install a List of Packages on Red Hat Based System"  tasks:    - name: "Installing a list of packages"      yum: name={{ item }} state=latest      with_items:        - curl        - httpd        - nano        - htop

方法-3:使用數(shù)組變量

$ sudo nano /etc/ansible/playbooks/packages-redhat-2.yml ---- hosts: web  become: yes  name: "Install a List of Packages on Red Hat Based System"  vars:     packages: [ 'curl', 'git', 'htop' ]  tasks:     - name: Install a list of packages       yum: name={{ item }} state=latest       with_items: "{{ packages }}"

劇本-4:在 Linux 系統(tǒng)上安裝更新

這個示例劇本允許你在基于 Red Hat 或 Debian 的 Linux 系統(tǒng)上安裝更新。

$ sudo nano /etc/ansible/playbooks/security-update.yml ---- hosts: web  become: yes  name: "Install Security Update"  tasks:    - name: "Installing Security Update on Red Hat Based System"      yum: name=* update_cache=yes security=yes state=latest      when: ansible_facts['distribution'] == "CentOS"     - name: "Installing Security Update on Ubuntu Based System"      apt: upgrade=dist update_cache=yes      when: ansible_facts['distribution'] == "Ubuntu"

以上是“什么是Ansible劇本”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章題目:什么是Ansible劇本
網(wǎng)頁URL:http://weahome.cn/article/jsesis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部