【问题标题】:Ansible playbook reference a git role which should run on localhost but it doesn'tAnsible playbook 引用了一个 git 角色,它应该在 localhost 上运行,但它没有
【发布时间】:2021-07-29 14:49:08
【问题描述】:

我需要能够根据提交/合并的目标分支从相应分支的 ansible 控制器上使用 ansible git 模块 git pull。我将 ansible git 放在一个角色中,并在每个剧本中引用该角色作为第一件事。这个 git 角色在 localhost 上运行。

我有以下库存:

PreProd:
  hosts:
    myhost.mydomain.com:

local:
  hosts:
    localhost:

和剧本:

- hosts: local
  connection: local
  vars_files:
    - "../group_vars/{{ ENV }}/{{ ENV }}.yml"

  tasks:
    - name: Print variables
      debug:
        msg: "{{ ENV }} {{ var_username }}:{{ var_password }} branch: {{ var_branch }}"

  roles:
  - git

- name: Deploy My Application
  hosts: "{{ ENV }}"
  gather_facts: false
  tasks:
    - debug:
        msg: "branch: {{ var_branch }}"

我在group_vars 中有以下结构:

group_vars\
   all\all.yml
   PreProd\PreProd.yml

我在group_vars 的所有组中定义了var_branch 变量,但在group_vars\all\all.yml 中没有定义,因为这个变量是特定于环境的。

当我运行 playbook 时,即使显示 localhost,它也会尝试建立连接:

$  ansible-playbook -i preprod-servers.yml playbooks/test.yml -e ENV=PreProd

PLAY [local] **************************************************************************************************************************************************************************************************

TASK [git : Get latest code from repository] ******************************************************************************************************************************************************************
fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Kerberos auth failure for principal me@domain.com with pexpect: <redacted>k<redacted>i<redacted>n<redacted>i<redacted>t<redacted>:<redacted> <redacted>P<redacted>a<redacted>s<redacted>s<redacted>w<redacted>o<redacted>r<redacted>d<redacted> <redacted>i<redacted>n<redacted>c<redacted>o<redacted>r<redacted>r<redacted>e<redacted>c<redacted>t<redacted> <redacted>w<redacted>h<redacted>i<redacted>l<redacted>e<redacted> <redacted>g<redacted>e<redacted>t<redacted>t<redacted>i<redacted>n<redacted>g<redacted> <redacted>i<redacted>n<redacted>i<redacted>t<redacted>i<redacted>a<redacted>l<redacted> <redacted>c<redacted>r<redacted>e<redacted>d<redacted>e<redacted>n<redacted>t<redacted>i<redacted>a<redacted>l<redacted>s<redacted>", "unreachable": true}

NO MORE HOSTS LEFT ********************************************************************************************************************************************************************************************

PLAY RECAP ****************************************************************************************************************************************************************************************************
localhost                  : ok=0    changed=0    unreachable=1    failed=0

感谢任何建议和见解。

【问题讨论】:

  • 这个怎么样:'获取初始凭据时密码不正确'

标签: git ansible ansible-2.x ansible-inventory


【解决方案1】:

建议:

  1. 永远不要有多个环境(例如 PREPROD 和 LOCAL) 相同的库存。
  2. Ansible 会自动将group_vars 文件中的变量分配给这些组中的主机。不要将vars_filesgroup_vars 文件一起使用。
  3. 对于local 组或localhost,设置connection: local

【讨论】:

  • 我已经更新了我的帖子,提供了有关要求的更多详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
相关资源
最近更新 更多