如何使用Ansible在$USER$HOME中创建文件夹
我是Ansible新手,尝试成为如何使用Ansible在$USER$HOME中创建文件夹,ansible,Ansible,我是Ansible新手,尝试成为$USER,然后在$HOME目录中创建.ssh文件夹,我的权限被拒绝: --- - hosts: amazon gather_facts: False vars: ansible_python_interpreter: "/usr/bin/env python3" account: 'jenkins' home: "{{out.stdout}}" tasks: - name: Create .SSH directory
$USER
,然后在$HOME
目录中创建.ssh
文件夹,我的权限被拒绝
:
---
- hosts: amazon
gather_facts: False
vars:
ansible_python_interpreter: "/usr/bin/env python3"
account: 'jenkins'
home: "{{out.stdout}}"
tasks:
- name: Create .SSH directory
become: true
become_method: sudo
become_user: "{{account}}"
shell: "echo $HOME"
register: out
- file:
path: "{{home}}/.ssh"
state: directory
我的输出是:
MacBook-Pro-60:playbooks stefanov$ ansible-playbook variable.yml -v
Using /Users/stefanov/.ansible/ansible.cfg as config file
PLAY [amazon] *************************************************************************************************************************************************************************************
TASK [Create .SSH directory] **********************************************************************************************************************************************************************
changed: [slave] => {"changed": true, "cmd": "echo $HOME", "delta": "0:00:00.001438", "end": "2017-08-21 10:23:34.882835", "rc": 0, "start": "2017-08-21 10:23:34.881397", "stderr": "", "stderr_lines": [], "stdout": "/home/jenkins", "stdout_lines": ["/home/jenkins"]}
TASK [file] ***************************************************************************************************************************************************************************************
fatal: [slave]: FAILED! => {"changed": false, "failed": true, "msg": "There was an issue creating /home/jenkins/.ssh as requested: [Errno 13] Permission denied: b'/home/jenkins/.ssh'", "path": "/home/jenkins/.ssh", "state": "absent"}
to retry, use: --limit @/Users/stefanov/playbooks/variable.retry
PLAY RECAP ****************************************************************************************************************************************************************************************
slave : ok=1 changed=1 unreachable=0 failed=1
我猜-name
和-file
是不同的任务
在-name
中执行的内容在-file
中不再有效?因为我在
-name
和-file
中切换到了Jenkins用户,我很可能使用了我的SSH帐户
那么,如何将两个任务连接到一个任务中?正确的方法是什么 还有一件事,如何使用
文件模块执行sudo?我看不到这样的选项:
或者我应该只执行shell:mkdir-pv$HOME/.ssh
而不是使用文件
模块吗
那么,如何将两个任务连接在一个任务中
您无法执行此操作,但您可以将变成
添加到第二个任务中,这将使其以与第一个任务相同的权限运行:
- file:
path: "{{home}}/.ssh"
state: directory
become: true
become_method: sudo
become_user: "{{account}}"
另一件事我怎么能做sudo与文件模块不能看到这样的选项
因为been
(和其他)不是模块的参数,而是任何任务(和游戏)的通用声明
我猜-name和-file都是dict,被认为是不同的任务
第一个任务是shell
,而不是name
。您可以将名称
添加到任何任务中(就像成为
)。谢谢您,它提供了丰富的信息。我想我得读一些新手指南。