Packer ansible 缺少 sudo 权限

Packer ansible lacking sudo permissions

尝试 运行 使用 ansible playbook 构建打包程序,但甚至无法从最简单的任务开始。

我在配置部分中将其作为打包程序配置:

"provisioners": [
    {
      "type": "ansible",
      "playbook_file": "../ansible/main.yml",
      "ansible_env_vars": [ "ANSIBLE_HOST_KEY_CHECKING=False", "ANSIBLE_SSH_ARGS='-o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s'", "ANSIBLE_NOCOLOR=True","become=true","become_method=sudo" ]
    }
  ]

这是剧本的实际内容:

- user:
    name: foo
    comment: "Foo Bar"

执行后失败,原因如下:

amazon-ebs: fatal: [default]: FAILED! => {"changed": false, "failed": true, "msg": "useradd: Permission denied.\nuseradd: cannot lock /etc/passwd; try again later.\n", "name": "foo", "rc": 1}

据我了解,这是因为 ansible 在打包程序构建时没有 运行 sudo 权限。我该如何解决?

根据documentation ansible_env_vars仅用于环境变量,但becomebecome_method是内部Ansible变量。

在供应商配置中使用额外的参数:

"extra_arguments": [ "--become" ]

或将 become 添加到您的剧本中。