使用 Ansible 预置 AWS Ubuntu 在收集事实或安装应用程序时出现权限错误,而不管是否升级



预置运行Ubuntu 20.04.3 LTS (GNU/Linux 5.11.0-1028-aws x86_64)的 AWS 实例时,预置将停止执行以下任务:

TASK [Gathering Facts]在剧本中设置become:true时的任务。将显示以下错误消息:Missing sudo password

apt: update_cache=yes在剧本中设置become: true的任务,并gather_facts: false.将显示以下错误消息:Missing sudo password

apt: update_cache=yes在剧本中not设置become: true时的任务。将显示以下错误消息:Failed to lock apt for exclusive operation: Failed to lock directory /var/lib/apt/lists/: E:Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)"

TASK [geerlingguy.pip : Ensure Pip is installed.]在剧本中not设置become: true时的任务。将显示以下错误消息:"E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)","E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?"

我怀疑这种情况正在发生,因为这是一个 AWS 修改的操作系统,正在GNU/Linux 5.11.0-1028-aws.我可以 ssh 进入实例并运行sudo apt updatesudo apt install python3-pip它无需密码即可工作,因为我ALL=(ALL:ALL) NOPASSWD:ALL为我的 ssh 用户设置了sudoers。但是,当我运行sudo apt update并且not在剧本中设置become: truesudo apt install python3-pip时,将显示上述错误消息。

我已经运行了这些版本的所有版本并重新运行了剧本。

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock-frontend

我发现这个堆栈溢出答案 Ansible 剧本无法锁定 apt 并添加了这些任务,但它会在此步骤失败raw: apt-get -y purge unattended-upgradesunattended-upgrades似乎已禁用,因为我在登录到实例时不再看到此消息。2 updates could not be installed automatically. For more details, see /var/log/unattended-upgrades/unattended-upgrades.log

这是我第一次在运行这些非常基本的 ansible 任务时遇到问题。鉴于AWS有自己的ansible模块,我确信我做错了什么或错过了一些明显的东西。我很难找到解决这个问题的方法,因为谷歌搜索一直无效。由于 AWS ansible 模块的普及,有太多不相关的结果。我没有尝试创建或修改任何 AWS 实例。我只是想提供一个。

我希望这里的众多AWS或Ansible专家之一可以帮助我。

代码如下: https://github.com/kahunacoder/ansible-wikijs

下面是一个示例

剧本.yml:

- hosts: all
gather_facts: true
become: true
vars:
ansible_python_interpreter: /usr/bin/python3
pip_package: python3-pip
pip_install_packages:
- name: docker
tasks:
- name: Update apt
apt: update_cache=yes
roles:
- geerlingguy.pip

hosts.yml:

ansible_host: wiki.mydomain.com # dev machine
ansible_ssh_user: wiki
ansible_ssh_private_key_file: "~/.ssh/id_rsa"
ansible_connection: ssh
ansible_python_interpreter: /usr/bin/python3

苏多尔:

wiki ALL=(ALL:ALL) NOPASSWD:ALL

修复是我的ansible.cfg文件的两行代码。

[sudo_become_plugin]
flags = -H -S

我在这里找到了答案:Ansible:没有密码的sudo

相关内容

  • 没有找到相关文章

最新更新