Ansible,从剧本加载/ etc / profile

时间:2018-07-23 16:34:46

标签: bash ansible vagrant virtualbox

当我尝试重新加载/ etc / profile中的bash配置文件时,请遇到问题。

我试图通过多种方式加载它, 命令:. /etc/profile,以及带有脚本模块和shell的脚本文件。

Ansible为我提供了所有已更改的状态,但是当我尝试回显配置文件中的变量时,例如echo $myname,它们在剧本中执行完之后不会显示任何内容。

当我尝试通过终端. /etc/profile再次加载它时,变量将被加载,并且我可以回显它的值。

我也在profile.d目录中创建了一个脚本文件,并用Ansible加载了它。

  

ps。完全的root权限由变为和--ask-become-pass赋予   参数。我在centos 7 X64上使用了无聊的盒子。

谢谢...

2 个答案:

答案 0 :(得分:1)

  

1)提供配置文件仅对单个任务有用。

例如,如果您的个人个人资料(我还没有进入/etc/profile)设置了myname=Ameen,则在以下代码中,第一个任务应回显您的名称,但第二个不应:

- shell: 'cd; . ./.bash_profile; echo "[$myname]"`
- shell: 'echo "[$myname]"'

每个任务都是一个独特的环境。在本地Shell环境中设置的变量将无法用于以后连接但又不会再次为其自身设置的其他环境。

我的输出:

[Ameen]
[]
  

2)bash使用.bash_profile,它通常是~/.bashrc的来源,而后者通常是/etc/bashrc的来源。

ksh中,通常是~/.profile~/.kshrc/etc/profile,尽管所有这些显然都是可配置的,只是约定可以在给定系统上完全不同地完成,尽管您应该考虑为什么。

  

3)您是否真的希望在所有用户来源的全局配置文件中设置myname

或者这只是您问题的一个示例?

答案 1 :(得分:0)