Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 如何在不接触日志路径和ansible\u日志路径的情况下单独存储ansible运行日志_Logging_Ansible - Fatal编程技术网

Logging 如何在不接触日志路径和ansible\u日志路径的情况下单独存储ansible运行日志

Logging 如何在不接触日志路径和ansible\u日志路径的情况下单独存储ansible运行日志,logging,ansible,Logging,Ansible,我是Ansible的新手,对Ansible的运行日志有要求。有人能帮忙吗?谢谢 我说的是运行日志,而不是剧本日志。 例如: 客户有一些剧本要运行,只有他们有权更新ansible.cfg 我还将开发一些剧本,但我必须使用coutomer的配置,包括ansible.cfg(log\u path)和变量ansible\u log\u path 现在我想将ansible运行日志保存在单独的日志文件中 (对于我开发的所有剧本,我不能影响客户的剧本) 另一个限制是剧本可以同时执行 我尝试了很多,但我发现这几

我是Ansible的新手,对Ansible的运行日志有要求。有人能帮忙吗?谢谢 我说的是运行日志,而不是剧本日志。 例如:

客户有一些剧本要运行,只有他们有权更新ansible.cfg 我还将开发一些剧本,但我必须使用coutomer的配置,包括ansible.cfg(log\u path)和变量ansible\u log\u path

现在我想将ansible运行日志保存在单独的日志文件中 (对于我开发的所有剧本,我不能影响客户的剧本) 另一个限制是剧本可以同时执行

我尝试了很多,但我发现这几乎是不可能的

我的第一次尝试是在每个剧本的开头添加一个任务:


- name: create log file
  hosts: localhost
  tasks:
    - name: rename log file
      shell: /bin/bash -l -c "touch  {{ lookup('env','ANSIBLE_LOG_PATH') }};mv {{ lookup('env','ANSIBLE_LOG_PATH') }} {{ lookup('env','ANSIBLE_LOG_PATH') }}-{{ lookup('pipe','date +%Y%m%d%H%M%S') }}"
      delegate_to: localhost
      become: yes
      become_user: "{{ lookup('env', 'USER') }}"
它首先运行良好,但如果同时运行多个Playbook,则只有第一个日志文件包含所有日志,其他日志文件为空

我正在考虑创建一个模块,但我不知道模块是否是我的解决方案

有什么建议吗? 我也不能使用插件,因为插件会影响所有的剧本,包括客户的剧本

谢谢你的建议。 顺致敬意,
秦彼得

你可以试试下面的方法。如果您使用的是同一个终端,或者您是唯一使用该终端的用户,那么这将起作用。如果多个用户要运行ansible playbook,则每个用户都已运行/设置以下命令。希望这有帮助

  • 您可以在~/.bash_配置文件中设置环境变量(如果允许),也可以在终端中为每个会话设置环境变量。 示例:
    “导出可解析日志路径=`date+%Y%m%d%H%m%S`.LOG”

  • 另一个选项是在~/.bash_配置文件中为ansible playbook设置别名(如果允许修改),或在终端中为每个会话设置别名。 示例:
    alias ansible playbook=“ansible\u LOG\u PATH=\`date+%Y%m%d%H%m%S\`。LOG ansible playbook”


  • 你可以试试下面的方法。如果您使用的是同一个终端,或者您是唯一使用该终端的用户,那么这将起作用。如果多个用户要运行ansible playbook,则每个用户都已运行/设置以下命令。希望这有帮助

  • 您可以在~/.bash_配置文件中设置环境变量(如果允许),也可以在终端中为每个会话设置环境变量。 示例:
    “导出可解析日志路径=`date+%Y%m%d%H%m%S`.LOG”

  • 另一个选项是在~/.bash_配置文件中为ansible playbook设置别名(如果允许修改),或在终端中为每个会话设置别名。 示例:
    alias ansible playbook=“ansible\u LOG\u PATH=\`date+%Y%m%d%H%m%S\`。LOG ansible playbook”

  • 
    - name: create log file
      hosts: localhost
      tasks:
        - name: rename log file
          shell: /bin/bash -l -c "touch  {{ lookup('env','ANSIBLE_LOG_PATH') }};mv {{ lookup('env','ANSIBLE_LOG_PATH') }} {{ lookup('env','ANSIBLE_LOG_PATH') }}-{{ lookup('pipe','date +%Y%m%d%H%M%S') }}"
          delegate_to: localhost
          become: yes
          become_user: "{{ lookup('env', 'USER') }}"