ansible-04 ubuntu安装docker

1、剧本

在03章节介绍过细节,这里与centos差不多,只是包管理不同


---
- name: 安装 Docker
  hosts: hw_docker_servers
  become: true
  tasks:
    - name: 更新 apt 缓存
      apt:
        update_cache: yes

    - name: 安装必要的依赖
      apt:
        name: "{{ item }}"
        state: present
      loop:
        - apt-transport-https
        - ca-certificates
        - curl
        - software-properties-common

    - name: 添加 Docker 官方 GPG 密钥
      apt_key:
        url: https://download.docker.com/linux/ubuntu/gpg
        state: present

    - name: 添加 Docker APT 源
      apt_repository:
        repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
        state: present

    - name: 安装 Docker
      apt:
        name: docker-ce
        state: present

    - name: 启动 Docker 服务并设置为开机自启动
      service:
        name: docker
        state: started
        enabled: yes

2、遇到的问题

执行ansible-play时提示:
{"msg": "Missing sudo password"}
问题原因:
Sudo权限未配置免密
若需通过Ansible执行需要sudo权限的命令,需在目标主机的/etc/sudoers文件中添加NOPASSWD规则。例如:

your_user ALL=(ALL) NOPASSWD: ALL

此配置可避免执行sudo时提示密码

配置步骤

  1. 编辑 /etc/sudoers 文件
    使用 visudo 命令安全编辑配置文件(避免语法错误导致系统问题)

    sudo visudo
    

    在文件中找到类似以下行:

    %sudo ALL=(ALL:ALL) ALL
    

    添加免密规则(以下任选一种):

    • 针对单个用户

      bash
      username ALL=(ALL) NOPASSWD: ALL
      
    • 针对用户组​(如 sudo 组):

      bash
      %sudo ALL=(ALL) NOPASSWD: ALL
      

    将 username 替换为实际用户名,保存并退出。

  2. 通过 /etc/sudoers.d/ 创建独立配置文件​(推荐)

    bash
    sudo visudo -f /etc/sudoers.d/nopasswd
    

    在新文件中写入免密规则(同上),保存退出。

  3. 验证语法并测试

    • 语法验证:visudo 会自动检查语法,无需额外操作。

    • 测试免密是否生效:

      bash
      sudo -n true  # 应无密码提示
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值