簡體   English   中英

第一個關於 Ansible 的基本劇本有沒有更好的方法?

[英]First basic playbook on Ansible is there a better way?

只是讓我了解 Ansible。 只是想看看我做錯了什么,或者什么是實現目標的更好方法。

任務 :

我的目標是更新文件/proc/sys/vm/overcommit_memory 我想將值0放入其中。 我還希望將更改之前的值記錄下來並在輸出中顯示給我,以防我需要回滾。

下面的工作正常,但想看看是否有更好的方法來做到這一點。

---
- hosts: "{{ target }}"
  gather_facts: yes
  become: yes

  tasks:

  - name: "update overcommit value on {{ target }} ..."
    shell: |
      echo "the value was "
      cat /proc/sys/vm/overcommit_memory
      echo 0 > /proc/sys/vm/overcommit_memory
      echo "the value now is  "
      cat /proc/sys/vm/overcommit_memory
    register: rc
    become: true
    become_user: root

  - debug:
      var: rc.stdout_lines

提前致謝

關於您的示例,建議使用 Ansible 模塊sysctl

---
- hosts: localhost
  become: true
  gather_facts: true

  vars:

    OVERCOMMIT_MEMORY: 0

  tasks:

  - name: 
    sysctl:
      name: vm.overcommit_memory
      value: "{{ OVERCOMMIT_MEMORY }}"
      state: present

由於 Ansible 是一個配置管理,它確保上述任務是冪等的,並且值可用並在之后設置。 “報告”可能不僅僅是


- name: Show value
  debug:
    msg: "'vm.overcommit_memory' values is {{ OVERCOMMIT_MEMORY }}"

因為

Ansible 允許您使用changed_when條件定義特定任務何時“更改”遠程節點。 這使您可以根據返回代碼或輸出確定是否應在 Ansible 統計信息中報告更改以及是否應觸發處理程序。

如果密鑰在那里,您將已經獲得信息,如果值不0

我還希望將更改之前的值記錄下來並在輸出中顯示給我,以防我需要回滾。

對於當前值集的簡單報告,您可以使用報告任務,例如

- name: Gather Facts OVERCOMMIT_MEMORY
  shell: "cat /proc/sys/vm/overcommit_memory"
  register: overcommit_memory
  changed_when: false
  failed_when: overcommit_memory.rc != 0 and overcommit_memory.rc != 1

- name: Show vaule
  debug:
    msg: "'vm.overcommit_memory' values was {{ overcommit_memory.stdout }}"

如果密鑰和文件不存在或訪問權限丟失,您可能需要調整定義失敗以捕獲案例。

更多文檔

因為可能是 Ansible 事實已經包含該值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM