gpt4 book ai didi

vagrant - 带有 Ansible 的客户机上的别名

转载 作者:行者123 更新时间:2023-12-03 18:33:08 24 4
gpt4 key购买 nike

我想在通过 Vagrant 运行的 guest 计算机上添加一些别名。我的供应商是 Ansible,如果我可以在剧本中添加带有任务的别名,那就太好了,我宁愿不必修改我的 Vagrantfile

我已经在一个角色中尝试了这两个:command: alias serve='pub serve --hostname=0.0.0.0'shell: "alias serve='pub serve --hostname=0.0.0.0'"但他们都没有工作。第一个引发了一个异常,我认为它来自 ''.第二个根本不添加别名。

最佳答案

shell 选项看起来不错,但它只会为 session 创建别名。然后,当您在配置后连接到它时,它将不存在。我也不确定剧本中的其他剧本是否能够使用它,因为他们可能会使用另一个 SSH session 。

要永久添加它,您需要将其添加到相关的 .bashrc.bash_aliases (然后由 .bashrc 获取),具体取决于您的 Linux 风格/版本。

为此,您可以简单地使用:

shell: echo "alias serve='pub serve --hostname=0.0.0.0'" >> ~/.bash_aliases

但这不是幂等的,并且每次重新运行 Ansible 剧本或 Vagrant 配置(将重新运行 Ansible 剧本)都会添加重复的行。

相反,您应该将 lineinfile module 与以下内容一起使用:
- name: Add serve alias for foo user
lineinfile:
path=/home/foo/.bashrc
line="alias serve='pub serve --hostname=0.0.0.0'"
owner=foo
regexp='^alias serve='pub serve --hostname=0.0.0.0'$'
state=present
insertafter=EOF
create=True

上面的播放将在 foo 用户的 .bashrc 文件的末尾添加别名行(如果由于某种原因不存在该文件,则创建该文件)。当您重新运行它时,它会尝试匹配正则表达式值(这可能需要使用转义部分进行调整),如果匹配,它将用行值替换它。

关于vagrant - 带有 Ansible 的客户机上的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30148076/

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