[英]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.