我想在通过Vagrant运行的来宾计算机上添加一些别名。我的配置程序是Ansible,如果我可以在playbook中添加带有任务的别名,那将会很棒。我宁愿不必修改我的Vagrantfile
。
我已经尝试了这两个角色:
command: alias serve='pub serve --hostname=0.0.0.0'
shell: "alias serve='pub serve --hostname=0.0.0.0'"
但他们都没有奏效。第一个提出了一个例外,我认为它来自''。第二个根本就不添加别名。
答案 0 :(得分:8)
shell选项看起来正确,但它只会为会话创建别名。然后,当您在配置后连接到它时,它将不存在。我也不确定剧本中的其他剧本是否可以使用它,因为他们可能会使用另一个SSH会话。
要永久添加,您需要将其添加到相关的.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:
dest=/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
文件的末尾(如果由于某种原因它不存在,则创建该文件)。当你重新运行它时,它会尝试匹配正则表达式值(这可能需要通过转义部分进行调整),如果匹配它,那么它将用行值替换它。