2016-07-22 42 views
0

我创建的Azure云有以下ansible脚本VM:具有SSH密钥身份验证的用户如何在Ansible中拥有sudo权限?

--- 

- name: azure playbook 
    hosts: localhost 
    vars_files: ['vars.yaml'] 
    tasks: 
    - name: Create VM with defaults 
    azure_rm_virtualmachine: 
     resource_group: "{{account_prefix}}_rg" 
     vm_size: Standard_D1 
     name: "{{account_prefix}}-vm1" 
     storage_account_name: "{{account_prefix}}store1" 
     network_interface_names: "{{account_prefix}}vm1eth0" 
     ssh_password_enabled: false 
     admin_username: owen 
     ssh_public_keys: 
     - { path: /home/owen/.ssh/authorized_keys, 
     key_data: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDH0q4pmdkJcc/JPVJui5uWMV12GsJAsDCosfUSSFZfTIx92bb9FC3hx1zU7tD1+Zw3aQW13m6ZS2T ... YnvieSbdD3v} 
     image: 
     offer: CentOS 
     publisher: OpenLogic 
     sku: '7.2' 
     version: latest 

但在运行下一个脚本时添加其他用户:

--- 

- name: create user 
    hosts: my-vm1.westeurope.cloudapp.azure.com 
# vars_files: ['vars.yaml'] 
    remote_user: owen 
    tasks: 
    - name: Create User 
    user: 
     name: andrea 
     password: $6$rounds=656000$1AspdTb0lfOSc5yM$bAkPgHkuHwap/j6f0P88WxOdjxq3MCRO7/qgufYB.s/4t4k99wwtu/.../ 
     group: users 
     shell: /bin/bash 
    become: true 

我得到“命令:需要密码“错误:

​​3210

我的清单看起来是这样的:

my-vm1.westeurope.cloudapp.azure.com ansible_ssh_private_key_file=/home/myuser/.ssh/id_rsa ansible_user=owen ansible_become=true 

那么用户如何拥有sudo权限并使用“成为”等等?

请注意,当清单文件中省略ansible_user和ansible_become时会发生相同的结果。

编辑:如果我作为欧文(从ssh私钥,创建虚拟机的盒子)ssh上,那么我可以运行sudo visudo -f/etc/sudoers并访问该文件。那么欧文有没有sudo权限?我现在变得困惑了!我误解了来自ansible添加用户脚本的错误吗?

编辑2:我认为这个问题是无效的 - 因为用户通过门户手动添加了sudo权限。我仍然不确定发生了什么,但我不认为这个问题是连贯的 - 或者真的代表了我试图解决的实际问题。

回答

1

您可以更改用户欧文sudo的配置用这个命令:

sudo visudo -f /etc/sudoers 

,并与用户欧文行更改为这样:

owen ALL=(ALL) NOPASSWD:ALL 

然后须藤不需要Ansible输入密码。或者您可以指示Ansible通过参数--ask-become-pass询问您的密码,如下所示:

ansible-playbook site.yml --ask-become-pass 
相关问题