首页 > 解决方案 > 如何强制 Ansible 使用 sudo 安装包?

问题描述

我有一个比运行角色的剧本,并使用具有 sudo 权限的用户登录服务器。问题是,当切换到这个用户时,我仍然需要使用sudo来安装包。

IE:

sudo yum install httpd

但是,Ansible 似乎忽略了这一点,并会尝试安装没有 的软件包sudo,这将导致失败。

Ansible 将运行以下命令:

yum install httpd

这是我使用的角色:

tasks:
  - name: Import du role 'memcacheExtension' 
    import_role:
      name: memcacheExtension
    become: yes
    become_method: sudo
    become_user: "{{become_user}}"
    become_flags: '-i'
    tags:
      - never
      - memcached

这是在我的上下文中失败的任务:

- name: Install Memcached
  yum:
    name: memcached.x86_64
    state: present

我是否将sudo参数设置在错误的位置?还是我做错了什么?

先感谢您

标签: ansiblesudo

解决方案


您可以指定成为:是的几个地方。它通常用于任务级别,有时用作命令行参数(--become,-b 使用 become 运行操作)。也可以在播放级别设置:

- hosts: servers
  become: yes
  become_method: enable
  tasks:
    - name: Hello
  ...

您也可以在 group_vars 中启用它:

group_vars/exmaple.yml

ansible_become: yes

对于您的示例,使用它来安装软件我会将其设置在任务级别。我认为在您的情况下,导入是问题所在。您应该在要导入的文件中设置它。


推荐阅读