ansible-playbook
运行时,默认情况下它会打印出该name
字段,并使用display_args_to_stdout
,它会显示使用的变量,这很有用,因此您无需设置name
。但它显示的信息太多。我可以让它只显示我在任务中设置的变量/参数吗?
例如这个剧本任务:
- lineinfile:
line: alias ll="ls -lhtr"
path: /root/.bashrc
默认显示如下(即使用ANSIBLE_DISPLAY_ARGS_TO_STDOUT=no
):
TASK [lineinfile] ************
ok: [server1]
当我打开时ANSIBLE_DISPLAY_ARGS_TO_STDOUT=yes
,它显示如下:
TASK [lineinfile line=alias ll="ls -lhtr", path=/root/.bashrc, _ansible_check_mode=True, _ansible_no_log=False, _ansible_debug=False, _ansible_diff=True, _ansible_verbosity=0, _ansible_version=2.9.9, _ansible_module_name=lineinfile, _ansible_syslog_facility=LOG_USER, _ansible_selinux_special_fs=['fuse', 'nfs', 'vboxsf', 'ramfs', '9p', 'vfat'], _ansible_string_conversion_action=warn, _ansible_socket=None, _ansible_shell_executable=/bin/sh, _ansible_keep_remote_files=False, _ansible_tmpdir=None, _ansible_remote_tmp=~/.ansible/tmp] ***
ok: [server1]
其中包含每个任务的大量变量(例如_ansible_selinux_special_fs=…
)。是否可以让它显示以下内容:
TASK [lineinfile line=alias ll="ls -lhtr", path=/root/.bashrc] ******
ok: [server1]
我在 ubuntu linux 18.04 上使用 ansible(v2.9.9)
答案1
问:“显示:TASK [lineinfile line=alias ll="ls -lhtr", path=/root/.bashrc]”
答:没有这样的回调插件但有可能发展它。有2个更简单的解决方案。
将变量放入name
。例如
- name: "lineinfile line={{ my_line }}, path={{ my_path }}"
lineinfile:
line: "{{ my_line }}"
path: "{{ my_path }}"
vars:
my_line: alias ll="ls -lhtr"
my_path: /root/.bashrc
给出
TASK [lineinfile line=alias ll="ls -lhtr", path=/root/.bashrc] ****
changed: [localhost]
下一个选项是loop_control
label
。例如
- lineinfile:
line: "{{ item.my_line }}"
path: "{{ item.my_path }}"
loop: "{{ my_lines }}"
loop_control:
label: "lineinfile line={{ item.my_line }}, path={{ item.my_path }}"
vars:
my_lines:
- {my_line: alias ll="ls -lhtr", my_path: /root/.bashrc}
给出
TASK [lineinfile] ****
changed: [localhost] => (item=lineinfile line=alias ll="ls -lhtr", path=/root/.bashrc)