Ansible 执行脚本时跳过 shell 命令
Skip shell commands when script is executed by Ansible
我有一个 shell 脚本可以做很多事情。有一段验证 GitHub 包注册表。此部分提示输入用户名和密码。当我使用 Ansible 执行 bash 脚本时,它卡在那里并显示一条消息 "Escalation succeeded"。我想做的是在 ansible 中定义注册表登录,这当然很简单。那不是问题。我遇到的问题是,当脚本通过 ansible 运行 时,我希望跳过 bash 脚本中的 GitHub 注册表命令。类似于:
if [[ "$ANSIBLE" == "true" ]]; then
skip
fi
知道如何实现吗?
可以为 Ansible 任务设置 environment。例如
- name: Shell script that does a lot of stuff
command: my_script.sh
environment:
my_script_in_ansible: "true"
然后在脚本中使用变量。例如
ANSIBLE=${my_script_in_ansible:-false}
if [[ "$ANSIBLE" == "true" ]]; then
skip
fi
避免潜在的环境名称冲突是个好主意。
(未测试)
我有一个 shell 脚本可以做很多事情。有一段验证 GitHub 包注册表。此部分提示输入用户名和密码。当我使用 Ansible 执行 bash 脚本时,它卡在那里并显示一条消息 "Escalation succeeded"。我想做的是在 ansible 中定义注册表登录,这当然很简单。那不是问题。我遇到的问题是,当脚本通过 ansible 运行 时,我希望跳过 bash 脚本中的 GitHub 注册表命令。类似于:
if [[ "$ANSIBLE" == "true" ]]; then
skip
fi
知道如何实现吗?
可以为 Ansible 任务设置 environment。例如
- name: Shell script that does a lot of stuff
command: my_script.sh
environment:
my_script_in_ansible: "true"
然后在脚本中使用变量。例如
ANSIBLE=${my_script_in_ansible:-false}
if [[ "$ANSIBLE" == "true" ]]; then
skip
fi
避免潜在的环境名称冲突是个好主意。
(未测试)