gpt4 book ai didi

ansible - 在 Ansible 中执行命令之前获取文件

转载 作者:行者123 更新时间:2023-12-03 21:43:49 25 4
gpt4 key购买 nike

我正在尝试使用下面的 Ansible yml 文件使用 nvm 安装节点 js 版本。

我收到错误,例如找不到源“source/home/centos/.nvm/nvm.sh”文件。但是,如果我通过使用 ssh 登录机器来做同样的事情,那么它工作正常。

- name: Install nvm
git: repo=https://github.com/creationix/nvm.git dest=~/.nvm version={{ nvm.version }}
tags: nvm

- name: Source nvm in ~/.profile
lineinfile: >
dest=~/.profile
line="source ~/.nvm/nvm.sh"
create=yes
tags: nvm

- name: Install node {{ nvm.node_version }}
command: "{{ item }}"
with_items:
- "source /home/centos/.nvm/nvm.sh"
- nvm install {{ nvm.node_version }}
tags: nvm

错误:
failed: [172.29.4.71] (item=source /home/centos/.nvm/nvm.sh) => {"cmd": "source /home/centos/.nvm/nvm.sh", "failed": true, "item": "source /home/centos/.nvm/nvm.sh", "msg": "[Errno 2] No such file or directory", "rc": 2}

failed: [172.29.4.71] (item=nvm install 6.2.0) => {"cmd": "nvm install 6.2.0", "failed": true, "item": "nvm install 6.2.0", "msg": "[Errno 2] No such file or directory", "rc": 2}

最佳答案

关于“没有这样的文件”错误:
source是一个内部 shell 命令(参见例如 Bash Builtin Commands ),而不是您可以运行的外部程序。没有名为 source 的可执行文件在您的系统中,这就是为什么您会得到 No such file or directory错误。

而不是 command模块使用 shell 这将执行 source外壳内的命令。

关于货源问题:

with_items loop Ansible 将运行 shell 两次,并且两个进程将相互独立。在一个中设置的变量将不会被另一个看到。

您应该在一个 shell 进程中运行这两个命令,例如:

- name: Install node {{ nvm.node_version }}
shell: "source /home/centos/.nvm/nvm.sh && nvm install {{ nvm.node_version }}"
tags: nvm

其他备注:

使用 {{ ansible_env.HOME }}而不是 ~git任务。任何一个都可以在这里工作,但波浪号扩展是 shell 的功能,你正在为 Ansible 编写代码。

关于ansible - 在 Ansible 中执行命令之前获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41379083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com