预置运行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 update
和sudo apt install python3-pip
它无需密码即可工作,因为我ALL=(ALL:ALL) NOPASSWD:ALL
为我的 ssh 用户设置了sudoers
。但是,当我运行sudo apt update
并且not
在剧本中设置become: true
sudo 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-upgrades
。unattended-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