Ansible,从 playbook 加载 /etc/profile

问题描述 投票:0回答:2

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

我尝试通过多种方式加载它,从 命令:

.  /etc/profile
以及带有脚本模块和 shell 的脚本文件。

Ansible 给出了所有更改后的状态,但是当我尝试回显配置文件内的变量时,例如

echo $myname
,它们在 playbook 中完成执行后什么也不打印。

当我尝试使用终端再次加载它时

. /etc/profile
变量已加载,我可以回显它的值。

我还在 profile.d 目录中创建了一个脚本文件,并使用 Ansible 加载它,但没有任何反应。

ps。完整的 root 权限是通过变得和

--ask-become-pass
获得的 范围。我正在使用 vagrant box 和 centos 7 X64。

谢谢你...

bash ansible vagrant virtualbox
2个回答
2
投票

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
投票

Ansible 将我的变量加载到我的全局配置文件中,不需要更改,因为它已经放置在该配置文件中

我在相同的环境中传递脚本,因此java成功读取变量

© www.soinside.com 2019 - 2024. All rights reserved.