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
仅用于环境变量,但become
和become_method
是内部Ansible变量。
在供应商配置中使用额外的参数:
"extra_arguments": [ "--become" ]
或将 become
添加到您的剧本中。
尝试 运行 使用 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
仅用于环境变量,但become
和become_method
是内部Ansible变量。
在供应商配置中使用额外的参数:
"extra_arguments": [ "--become" ]
或将 become
添加到您的剧本中。