首页 文章

Ansible,从playbook加载/ etc / profile

提问于
浏览
0

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

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

Ansible给我所有人改变了状态,但是当我试图回应配置文件中的变量时,例如 echo $myname ,他们在playbook中完成执行后没有打印任何内容 .

当我试图用终端 . /etc/profile 再次加载它时,变量被加载,我可以回显它的值 .

我也在profile.d目录中创建一个脚本文件,然后用Ansible加载它没有任何反应 .

ps . 使用become和--ask-become-pass参数给出完全root权限 . 我正在使用带有centos 7 X64的流浪盒 .

谢谢...

2 回答

  • 1

    1)获取配置文件仅适用于单个任务 .

    例如,如果您的 Profiles (我还没有到 /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能够在全局配置文件中设置所有用户来源?

    或者这只是你问题的一个例子?

相关问题