【问题标题】:Pass variables from project to playbooks ansible将变量从项目传递到剧本 ansible
【发布时间】:2018-05-20 11:20:48
【问题描述】:

这是我的设置。我已经创建了一个 scm 类型的 git 项目,并在那里有我的代码。我的剧本也在那个存储库中,它包含 docker build 和 run 命令。为了构建我的 docker,我应该在我的 docker 文件所在的位置执行构建命令(在这种情况下,ansible 项目克隆 /var/lib/awx/project)。我想找到通往我的 ansible playbook 的路径。

我的剧本是这样的:

---
- hosts: all
  sudo: yes
  remote_user: ubuntu
  gather_facts: no

  tasks:
    - name : build docker
      become: yes
      become_user: root
      command : docker build -t "test-api" .
    - name: run docker
      become: yes
      become_user: root
      command : docker run -it -p 80:9001 --name api test-api

我怎样才能做到这一点?

【问题讨论】:

    标签: ansible ansible-tower


    【解决方案1】:

    您可以在执行ansible-playbook 命令时将变量发送到剧本。这是你可以做的:

     ansible-playbook my-playbook.yml -e"path='/var/lib/awx/project'"
    

    然后在剧本中将其用作普通变量:{{ path }}

    如果您决定更改路径,这很有用。如果您对此有任何疑问,请随时在 cmets 中提问

    【讨论】:

    • 我正在使用 ansible tower,我可以用同样的吗?
    • 我不知道 Ansible Tower,但我认为可能是一样的。 Go to this website for some examples。我认为选项“--extra-vars”与我使用的“-e”相同
    • 是的,我使用了额外的变量来映射剧本。它使我无法在剧本中定义它们。好方法。
    • @DasunHettiarachchi 如果您有大量变量,您可以在文件中定义它们。如果您使用大变量或加密的 Ansible 密码,这是一个很好的解决方案
    • 是的,我正在使用很多变量,你能加密变量并存储在一个文件中,并且可以老化和使用吗?
    【解决方案2】:

    您可以使用vars 来定义变量:

    ---
    - hosts: all
      sudo: yes
      remote_user: ubuntu
      gather_facts: no
      vars:
        file_path: "<your file path>" 
    
      tasks:
        - name : build docker
          become: yes
          become_user: root
          command : docker build -t "test-api" .
        - name: run docker
          become: yes
          become_user: root
          command : docker run -it -p 80:9001 --name api test-api
    

    然后在你的命令中访问像“{{ file_path }}”这样的变量

    【讨论】:

    • @Dasun Hettiarachchi:如果您需要更多信息,请告诉我?
    • 是的。所以我必须定义路径才能实现这一目标?有什么方法可以从 ansbile 变量中获取路径而不定义它?例如,它克隆到这样的路径 var/lib/awx/projects/_16__docker 我每次添加项目时都必须检查服务器
    • 为了访问 ansible 变量,您需要在 playbook 文件中定义。或者如果你使用roles,那么在vars->main.yaml下。
    • 您可以在变量中定义克隆路径,并将该变量用于克隆步骤并构建命令
    • 好的。我不熟悉角色。在剧本中使用变量进行测试
    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多