2015-09-07 39 views
0

我有一個工作任務,例如:Ansible sudo_user問題與指令艙

- hosts: webservers 
    sudo: yes  
    gather_facts: yes  
    tasks: 
     - name: Create temp directory 
      file: state=directory path="{{ debian.tmp_dir }}" 
     - name: Correct Apt Dependency 
      command: apt-get -f install -y 

但是當我加入sudo_user: "{{ ansible_ssh_user }}",它要求我修改命令通過添加sudo的前綴正常工作,命令如

- hosts: webservers 
    sudo: yes 
    sudo_user: "{{ ansible_ssh_user }}" 
    gather_facts: yes  
    tasks: 
     - name: Create temp directory 
      file: state=directory path="{{ debian.tmp_dir }}" 
     - name: Correct Apt Dependency 
      command: sudo apt-get -f install -y 

鑑於sudoers列表中的ansible_ssh_user爲什麼我們需要在後面的情況下添加sudo sudo_user不是root

實際的問題,我想周圍的tmp目錄的創建,它應該是ubuntu:ubuntu如果ansible_ssh_userubuntu,無需添加user=ubuntu, group=ubuntu

回答

0

你可能應該運行play作爲普通用戶,並明確指定需要root權限的命令每個任務使用sudo: yes。在這種情況下目錄將被創建爲普通用戶(任務2):

劇本:

--- 
- hosts: all 

    vars: 

    debian_tmp_dir: /tmp/my_temp_dir 

    tasks: 

    - name: Create temp directory 
     file: state=directory path={{ debian_tmp_dir }} 

    - name: Create root file 
     sudo: yes 
     command: touch /tmp/root_temp_file 

    - name: Check debian_tmp_dir file permissions 
     stat: path={{ debian_tmp_dir }} 
     register: user_folder_permissions 

    - name: Check file created with sudo permissions 
     stat: path=/tmp/root_temp_file 
     register: root_file_permissions 

    - debug: var=user_folder_permissions.stat.pw_name 

    - debug: var=root_file_permissions.stat.pw_name 

輸出:

==> default: Running provisioner: ansible... 

PLAY [all] ******************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [default] 

TASK: [Create temp directory] ************************************************* 
ok: [default] 

TASK: [Create root file] ****************************************************** 
changed: [default] 

TASK: [Check {{ debian_tmp_dir }} file permissions] *************************** 
ok: [default] 

TASK: [Check file created with sudo permissions] ****************************** 
ok: [default] 

TASK: [debug var=user_folder_permissions.stat.pw_name] ************************ 
ok: [default] => { 
    "var": { 
     "user_folder_permissions.stat.pw_name": "vagrant" 
    } 
} 

TASK: [debug var=root_file_permissions.stat.pw_name] ************************** 
ok: [default] => { 
    "var": { 
     "root_file_permissions.stat.pw_name": "root" 
    } 
} 

PLAY RECAP ******************************************************************** 
default     : ok=7 changed=1 unreachable=0 failed=0  
+0

我需要須藤上大多數的任務是這樣,加入須藤到每個只是過度。我的問題簡單地通過:'sudo:yes'用'user:ubuntu'解決 – sakhunzai