【问题标题】:ANSIBLE_ROLES_PATH cannot assume to get correct role in bash scriptANSIBLE_ROLES_PATH 不能假设在 bash 脚本中获得正确的角色
【发布时间】:2020-09-22 15:42:45
【问题描述】:

来自Ansible: Can I execute role from command line? -

HOST_PATTERN=$1
shift
ROLE=$1
shift

echo "To apply role \"$ROLE\" to host/group \"$HOST_PATTERN\"..."

export ANSIBLE_ROLES_PATH="$(pwd)/roles"
export ANSIBLE_RETRY_FILES_ENABLED="False"

ANSIBLE_ROLES_PATH="$(pwd)/roles" ansible-playbook "$@" /dev/stdin <<END
---
- hosts: $HOST_PATTERN
  roles:
    - $ROLE
END

问题是当我使用./apply.sh all dev-role -i dev-inventory 运行时,它无法承担正确的角色。当我使用ansible-playbook -i dev-inventory site.yml --tags dev-role 运行时,它正在工作。

以下是错误信息

fatal: [my-api]: FAILED! => {"changed": false, "checksum_dest": null, "checksum_src": "d3a0ae8f3b45a0a7906d1be7027302a8b5ee07a0", "dest": "/tmp/install-amazon2-td-agent4.sh", "elapsed": 0, "gid": 0, "group": "root", "mode": "0644", "msg": "Destination /tmp/install-amazon2-td-agent4.sh is not writable", "owner": "root", "size": 838, "src": "/home/ec2-user/.ansible/tmp/ansible-tmp-1600788856.749975-487-237398580935180/tmpobyegc", "state": "file", "uid": 0, "url": "https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent4.sh"}

【问题讨论】:

  • dev-rol != dev-role
  • 如果您在特定情况下定义“它不能承担正确的角色”意味着什么,您将获得更多帮助;您的问题中的错误消息或日志行完全为零
  • @mdaniel 我添加了错误消息。
  • @PaulHodges 这是我的错字。我已经修好了。
  • 我猜site.yml 包含become: yes 而你的/dev/stdin 版本没有

标签: ansible ansible-galaxy


【解决方案1】:

基于"msg": "Destination /tmp/install-amazon2-td-agent4.sh is not writable",我猜是因为site.yml 包含become: yes 语句,这使得所有任务都以root 运行。 “匿名”剧本不包含 become: 声明,因此需要一个运行 ansible-playbook --become 或添加 become: yes 到它,也

ANSIBLE_ROLES_PATH="$(pwd)/roles" ansible-playbook "$@" /dev/stdin <<END
---
- hosts: $HOST_PATTERN
  become: yes
  roles:
    - $ROLE
END

【讨论】:

猜你喜欢
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 2015-07-02
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
  • 2012-02-07
相关资源
最近更新 更多