Ansible库存

任何人都可以帮助我在Ansible库存variables?

我有一个服务器,通过ssh不允许rootlogin,我用普通用户(MYUSER)login服务器,然后su -成为root用户。 我有用户(MYUSER)SSH基于密钥的身份validation。 现在,我想执行下面的东西。

 ansible --private-key /PATH/TO/PRIVATE/KEY.KEY -i INVENTORY -m shell -a "whoami" all 

但是我得到输出作为MYUSER。

我想在用户MYUSER中使用我的ssh密钥login服务器,然后通过root用户在服务器上使用shell模块执行一些命令:注意:我有root用户密码来提供库存。 以下是我创build的广告资源。 (^ ^)我知道这是错的。

 test-web.example.com ansible_ssh_host=XXXX ansible_ssh_user=MYUSER ansible_become_method=su ansible_become_user=root ansible_become_pass=Xjdt@mdaj12 

执行:

 [root@server ansi]# ansible --private-key /root/MASTER/audit/key.key -i test -m shell -a "whoami" all test-web.example.com | SUCCESS | rc=0 >> MYUSER 

我怎样才能做这个工作?

在您明确要求之前,Ansible不会成为特权用户。

为此,在-b切换到一个合适的CLI中。 尝试:

 ansible all -b --private-key /root/MASTER/audit/key.key -i test -m shell -a "whoami" 

像Konstanting说的那样,-b或–become开关是正确的。

在剧本中,你也可以添加每个任务或全局

 become: yes 

另外如果你不想成为根

 become: yes become_user: user2 

你的hostfile行看起来不错

不过,我猜如果你不需要指定ansible_become_method = su(我认为ansible会使用sudo或su默认情况下,只要你想要强制使用su,你需要指定它)

如果清单名称是绑定到IP的有效域,则也不是ansible_ssh_host:test-web.example.com

你也可能不需要指定:

 ansible_become_user=root 

只有当你不希望默认成为行为切换到默认的根,而是从你自己的另一个手动创build的用户。

因此,我的线看起来有点矮,更像是这个,如果主机名是一个真正的域名地址!:

http://www.domain.com ansible_user = nonrootuser ansible_become_pass = ROOTPASSWD

顺便说一句:ansible_user是相同的ansible_ssh_user只是更短;)相同