Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Ansible在$USER$HOME中创建文件夹_Ansible - Fatal编程技术网

如何使用Ansible在$USER$HOME中创建文件夹

如何使用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

我是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
      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
。您可以将
名称
添加到任何任务中(就像
成为
)。

谢谢您,它提供了丰富的信息。我想我得读一些新手指南。