1. 程式人生 > >例項學習ansible系列(13)第一個playbook

例項學習ansible系列(13)第一個playbook

知識點:ansible使用playbook來管理自動化task。playbook是yaml格式的檔案,其基本內容可以認為是多條ansible的ad-hoc的語句組成。我們在前面嘗試了很多常用module的ad-hoc的寫法,接下來通過一個最簡單的例子來看看使用playbook怎麼用。

事前準備

[root@host31 ~]# cat hello.playbook
- hosts: host31
  tasks:
    - name:  say hello task
      shell: echo hello world `date` by `hostname` >/tmp/hello
.log [root@host31 ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

playbook的說明
hosts: 用於指定操作物件節-點
tasks: 用於指定要處理的內容
name:task的名稱,ansible可以把很多task使用playbook編排起來,通過名稱,實際執行的時候可以清楚地看到執行情況
shell: ansible的shell模組,在前面的例項中我們已經知道command/shell/raw等的區別,所以可以知道這個簡單的例子中使用哪個模組都能實現這個簡單的功能

執行playbook

[[email protected]
~]# ansible-playbook hello.playbook PLAY [host31] ****************************************************************** TASK [setup] ******************************************************************* ok: [host31] TASK [say hello task] ********************************************************** changed: [host31] PLAY RECAP *****
**************************************************************** host31 : ok=2 changed=1 unreachable=0 failed=0 [[email protected] ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

結果確認

對照執行的結果,基本上已經無需說明。
changed有一個,unreachable和失敗的都沒有。log也好好地輸出了。

[root@host31 ~]# ll /tmp/hello.log
-rw-r--r--. 1 root root 51 Jul 31 01:13 /tmp/hello.log
[root@host31 ~]# cat /tmp/hello.log
hello world Sun Jul 31 01:13:35 EDT 2016 by host31
[root@host31 ~]#
  • 1
  • 2
  • 3
  • 4
  • 5

但是為什麼會有setup這個task呢,那是因為default的情況下,facts是會被收集的的,我們可以通過設定引數gather_facts讓其不被收集。

設定gather_facts

將gather_facts設定為false,再次確認。

[root@host31 ~]# cat hello.playbook
- hosts: host31
  gather_facts: false
  tasks:
    - name:  say hello task
      shell: echo hello world `date` by `hostname` >/tmp/hello.log
[root@host31 ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

再次執行,setup的task不再被執行。

[[email protected] ~]# ansible-playbook hello.playbook

PLAY [host31] ******************************************************************

TASK [say hello task] **********************************************************
changed: [host31]

PLAY RECAP *********************************************************************
host31                     : ok=1    changed=1    unreachable=0    failed=0

[[email protected] ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed