我在shell脚本中有一个函数,我想在我的ansible剧本中使用它
我的shell脚本-
wait_for_apt_locks () {
while sudo fuser /var/{lib/cache/apt/archives}/{lock,lock-frontend} >/dev/null 2>&1; do
echo "Waiting for apt locks"
sleep 1
done
我想在我的剧本wait.yml中使用此功能wait_for_apt_locks
下面是使用它的正确方法吗?
- name: source /tmp/function.sh
shell: |
source /tmp/functions.sh
wait_for_apt_locks
答案 0 :(得分:1)
关于加载bash函数,我没有任何建议-如果您的示例可行,那么它可行!
但是请注意,Ansible有一个wait_for
模块,用于监视端口或文件。
也许这是处理锁定文件的更Ansible本机解决方案。
来自https://docs.ansible.com/ansible/latest/modules/wait_for_module.html#examples:
- name: Wait until the lock file is removed
wait_for:
path: /var/lock/file.lock
state: absent
答案 1 :(得分:1)
如果仅出于在此处调用Shell脚本的目的而创建Shell脚本,则可以跳过脚本文件并直接执行内联逻辑。归根结底,如果可行,就可以了。
- name: Run a shell command inline
become: true
command: >
while fuser {lib/cache/apt/archives}/{lock,lock-frontend} >/dev/null 2>&1; do
echo "Waiting for apt locks";
sleep 1;
done
ignore_errors: no
args:
chdir: /var