我使用以下ansible脚本在azure云中创建一个vm:
---
- 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
我得到“sudo:需要密码”错误:
PLAY [create user] *************************************************************
TASK [setup] *******************************************************************
fatal: [my-vm1.westeurope.cloudapp.azure.com]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "sudo: a password is required\r\n", "msg": "MODULE FAILURE", "parsed": false}
NO MORE HOSTS LEFT *************************************************************
to retry, use: --limit @8-add-admin-user-to-vm-with-userpswd-already.retry
我的广告资源如下:
my-vm1.westeurope.cloudapp.azure.com ansible_ssh_private_key_file=/home/myuser/.ssh/id_rsa ansible_user=owen ansible_become=true
那么用户怎么能拥有sudo权限呢?所以使用ansible'成为'之类的东西?
请注意,当清单文件中省略ansible_user和ansible_become时会发生相同的结果。
编辑:如果我将vm作为owen(在带有ssh私钥的框中,创建了vm),那么我就可以运行sudo visudo -f / etc / sudoers并访问该文件。那么欧文是否有sudo特权呢?我现在感到困惑!!我是否误解了ansible添加用户脚本中的错误?EDIT2:我认为这个问题无效 - 因为用户确实通过门户网站手动添加了sudo权限。我仍然不确定发生了什么,但我不认为这个问题是连贯的 - 或者实际上代表了我试图解决的实际问题。
答案 0 :(得分:4)
您可以使用以下命令更改用户owen的sudo配置:
sudo visudo -f /etc/sudoers
并将用户owen的行更改为:
owen ALL=(ALL) NOPASSWD:ALL
然后sudo不会要求Ansible输入密码。或者您可以指示Ansible使用参数--ask-become-pass
向您询问密码,如下所示:
ansible-playbook site.yml --ask-become-pass