首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许的lineinfile给/etc/主机一个错误

不允许的lineinfile给/etc/主机一个错误
EN

Stack Overflow用户
提问于 2015-10-28 16:44:45
回答 1查看 3.2K关注 0票数 0

在我的角色中,我有一个简单的任务:

代码语言:javascript
复制
- name: Updating the /etc/hosts
  lineinfile: dest=/etc/hosts line="192.168.99.100  {{ item }}"
  with_items: 
    - domain1.com
    - domain2.com
  tags: etc

当我运行我的游戏指南时:

代码语言:javascript
复制
robe:ansible-develop robe$ ansible-playbook -i inventory develop-env.yml -vvvv --extra-vars "user=`whoami`" --tags etc --become-user=robe --ask-become-pass
SUDO password: 

PLAY [127.0.0.1] ************************************************************** 

GATHERING FACTS *************************************************************** 
<127.0.0.1> REMOTE_MODULE setup
<127.0.0.1> EXEC ['/bin/sh', '-c', 'mkdir -p /tmp/ansible-tmp-1446050161.27-256837595805154 && chmod a+rx /tmp/ansible-tmp-1446050161.27-256837595805154 && echo /tmp/ansible-tmp-1446050161.27-256837595805154']
<127.0.0.1> PUT /var/folders/x1/dyrdksh50tj0z2szv3zx_9rc0000gq/T/tmpMYjnXz TO /tmp/ansible-tmp-1446050161.27-256837595805154/setup
<127.0.0.1> EXEC ['/bin/sh', '-c', 'chmod a+r /tmp/ansible-tmp-1446050161.27-256837595805154/setup']
<127.0.0.1> EXEC /bin/sh -c 'sudo -k && sudo -H -S -p "[sudo via ansible, key=rqphpqfpcbsifqtnwflmmlmpwrcnkpqe] password: " -u robe /bin/sh -c '"'"'echo BECOME-SUCCESS-rqphpqfpcbsifqtnwflmmlmpwrcnkpqe; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /tmp/ansible-tmp-1446050161.27-256837595805154/setup'"'"''
<127.0.0.1> EXEC ['/bin/sh', '-c', 'rm -rf /tmp/ansible-tmp-1446050161.27-256837595805154/ >/dev/null 2>&1']
ok: [127.0.0.1]

TASK: [docker-tool-box | Updating the /etc/hosts] ***************************** 
<127.0.0.1> REMOTE_MODULE lineinfile dest=/etc/hosts line="192.168.99.100 ptxrt.com"
<127.0.0.1> EXEC ['/bin/sh', '-c', 'mkdir -p /tmp/ansible-tmp-1446050161.49-9492873099893 && chmod a+rx /tmp/ansible-tmp-1446050161.49-9492873099893 && echo /tmp/ansible-tmp-1446050161.49-9492873099893']
<127.0.0.1> PUT /var/folders/x1/dyrdksh50tj0z2szv3zx_9rc0000gq/T/tmpyLOGd6 TO /tmp/ansible-tmp-1446050161.49-9492873099893/lineinfile
<127.0.0.1> EXEC ['/bin/sh', '-c', u'chmod a+r /tmp/ansible-tmp-1446050161.49-9492873099893/lineinfile']
<127.0.0.1> EXEC /bin/sh -c 'sudo -k && sudo -H -S -p "[sudo via ansible, key=nofwziqxytbhjwhluhtzdfcqclqjuypv] password: " -u robe /bin/sh -c '"'"'echo BECOME-SUCCESS-nofwziqxytbhjwhluhtzdfcqclqjuypv; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /tmp/ansible-tmp-1446050161.49-9492873099893/lineinfile'"'"''
<127.0.0.1> EXEC ['/bin/sh', '-c', 'rm -rf /tmp/ansible-tmp-1446050161.49-9492873099893/ >/dev/null 2>&1']
failed: [127.0.0.1] => (item=ptxrt.com) => {"failed": true, "item": "ptxrt.com"}
msg: The destination directory (/private/etc) is not writable by the current user.

FATAL: all hosts have already failed -- aborting

PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/Users/robe/develop-env.retry

127.0.0.1                  : ok=1    changed=0    unreachable=0    failed=1 

我不明白为什么错误信息会说:

代码语言:javascript
复制
 msg: The destination directory (/private/etc) is not writable by the current user.

正确的目录应该是/etc/host。

有线索吗?

我在做MacOS.

我的剧本是:

代码语言:javascript
复制
- hosts: 127.0.0.1
  connection: local
  become: yes
  become_method: sudo
  become_user: "{{user}}"
  roles:
    - role-1
    - role-2

我按命令行放置become_user。所以我所有的角色都在和。但还是不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-28 17:10:48

在OSX上,/etc/文件夹实际上是指向/private/etc/文件夹的符号链接,因此出现了错误。(Ansible只是透明地遵循符号链接)。

至于错误,您需要使用become: yes (sudo权限)运行任务才能写入/etc/hosts/

基于更新和注释的编辑

要获得编辑主机文件的正确权限,您需要成为root用户。对OSX来说,在任务上设置become: yes就足够了,因为Ansible将默认为sudo作为become方法,root作为用户。

要指定sudo密码,您可以做两件事之一。

  1. 在命令行上使用--ask-become-pass,Ansible将在需要时提示您
  2. 在库存文件中的组或主机上使用ansible_become_pass变量。例如localhost ansible_become_pass=batman

请注意,Ansible docs建议不要使用2,并使用1,以免将密码存储在纯文本中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33396807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档