如何在Ansible中基于OS类型运行剧本任务?
收藏

我用ansible写了一个剧本任务。我可以在linux端运行playbook。

- name: Set paths for go
      blockinfile:
        path: $HOME/.profile
        backup: yes
        state: present
        block: |
          export PATH=$PATH:/usr/local/go/bin
          export GOPATH=$HOME/go
          export FABRIC_CFG_PATH=$HOME/.fabdep/config

    - name: Load Env variables
      shell: source $HOME/.profile
      args:
        executable: /bin/bash
      register: source_result
      become: yes

在linux中,我们在主目录中有.profile,但在Mac中,macOS中没有.profile.bash_profile
所以我想检查os是否是Mac,那么路径应该是$HOME/.bash_profile,如果os是基于linux的,那么它应该查找$HOME/.profile
我试着加上
when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'precise'

但它不是首先工作的,而且是一个长过程。我想在一个变量中得到基于操作系统的路径并使用它。
谢谢


最佳答案:

我这样找到了解决办法。我在yaml文件的顶部添加了gather_facts:true,它开始工作。我开始使用变量作为ansible_distribution
谢谢

    公众号
    关注公众号订阅更多技术干货!