【问题标题】:can not source ~/.bashrc file with ansible无法使用 ansible 获取 ~/.bashrc 文件
【发布时间】:2015-12-07 12:41:14
【问题描述】:

我在一个文件.bash_aliases 中有一个别名列表,该文件正在使用ansible playbook 复制到远程服务器。该文件正在复制到目标位置,但未使用以下 ansible 任务加载 .bashrc(进而加载 .bash_aliases)文件。

我已经尝试给出可执行参数

  - name: source the .bashrc file
    shell: source ~/.bashrc
    args:
      executables: "/bin/bash"

没有参数

  - name: source the .bashrc file
    shell: source ~/.bashrc

带有原始模块

  - name: source the .bashrc file
    raw: source ~/.bashrc

带命令模块 - 名称:来源 .bashrc 文件 命令:source ~/.bashrc

没有用!!!任何帮助

【问题讨论】:

  • 你怎么“知道”它没有被加载?发布可以重现问题的内容。
  • @KarolyHorvath 因为我在.bash_aliases 文件中列出的别名不起作用。但是在登录远程服务器后手动source .bashrc文件时,别名工作正常。
  • 这并不意味着它没有被执行。
  • @KarolyHorvath 为什么在使用上面列出的模块运行剧本后别名不起作用?
  • 我假设您想在以后的任务中使用一些别名。如果是这种情况,那么您就不走运了,因为 ansible 将每个任务放在 separate python 脚本中,然后将其复制到主机然后执行它。您在上一个任务中设置的任何别名将不会在任何后续任务中看到。

标签: bash ansible


【解决方案1】:

通过阅读您的 cmets,您表示您正在尝试制作永久别名,而不是针对特定会话。为什么不在 /etc/profile.d 中创建这些别名,而不是由用户在需要这些特定别名的机器上创建?

另外,由于我不是 Ansible 专家,所以在我对 Ansible 细节进行 google 搜索时弹出的另一篇帖子...Not possible to source .bashrc with Ansible(感谢@chucksmash 提供链接)

“史蒂夫·米奇利

您有两个选项可以将源代码与 ansible 一起使用。一种是使用“shell:”命令和 /bin/sh(ansible 默认值)。 “源”称为“。”在 /bin/sh 中。所以你的命令是:

-name: source bashrc
sudo: no
shell: . /home/username/.bashrc && [the actual command you want run]

请注意,您必须在采购 .bashrc b/c 之后运行命令,每个 ssh 会话都是不同的 - 每个 ansible 命令都在单独的 ssh 事务中运行。

您的第二个选择是强制 Ansible shell 使用 bash,然后您可以使用“source”命令:\

name: source bashrc
sudo: no   
shell: source /home/username/.bashrc && [the actual command you want run]
args:
  executable: /bin/bash

最后,我要注意的是,如果您使用的是 Ubuntu 或类似系统,您可能希望实际获取“/etc/profile”,这更完全地模拟了本地登录。”

【讨论】:

  • 如果您查看您链接的其他网站的 URL,您会发现它们只是在复制 StackOverflow 内容(“...q/stackoverflow/22256884/...”。答案是可用here
【解决方案2】:

如果您希望在一个 Bash 实例中设置的变量在其他 Bash 实例中可见,或者在运行此 Bash 脚本的 Ansible 实例中可见,则无法做到这一点;这是 Unix 进程模型所固有的。

可以做的是设置一个变量,然后运行设置该值所需的任何工具。

bash -c 'var="value" /path/to/other/tool'

这可能很复杂,但如果您需要执行的任务可能需要的不仅仅是最微不足道的调试,那么您最好创建一个单独的外部脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2023-01-30
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多