115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
---
 | 
						|
- name: Configure Podman for Nomad Integration
 | 
						|
  hosts: all
 | 
						|
  become: yes
 | 
						|
  gather_facts: yes
 | 
						|
 | 
						|
  tasks:
 | 
						|
    - name: 显示当前处理的节点
 | 
						|
      debug:
 | 
						|
        msg: "🔧 正在为 Nomad 配置 Podman: {{ inventory_hostname }}"
 | 
						|
 | 
						|
    - name: 确保 Podman 已安装
 | 
						|
      package:
 | 
						|
        name: podman
 | 
						|
        state: present
 | 
						|
 | 
						|
    - name: 启用并启动 Podman socket 服务
 | 
						|
      systemd:
 | 
						|
        name: podman.socket
 | 
						|
        enabled: yes
 | 
						|
        state: started
 | 
						|
 | 
						|
    - name: 创建 Podman 系统配置目录
 | 
						|
      file:
 | 
						|
        path: /etc/containers
 | 
						|
        state: directory
 | 
						|
        mode: '0755'
 | 
						|
 | 
						|
    - name: 配置 Podman 使用系统 socket
 | 
						|
      copy:
 | 
						|
        content: |
 | 
						|
          [engine]
 | 
						|
          # 使用系统级 socket 而不是用户级 socket
 | 
						|
          active_service = "system"
 | 
						|
          [engine.service_destinations]
 | 
						|
          [engine.service_destinations.system]
 | 
						|
          uri = "unix:///run/podman/podman.sock"          
 | 
						|
        dest: /etc/containers/containers.conf
 | 
						|
        mode: '0644'
 | 
						|
 | 
						|
    - name: 检查是否存在 nomad 用户
 | 
						|
      getent:
 | 
						|
        database: passwd
 | 
						|
        key: nomad
 | 
						|
      register: nomad_user_check
 | 
						|
      ignore_errors: yes
 | 
						|
 | 
						|
    - name: 为 nomad 用户创建配置目录
 | 
						|
      file:
 | 
						|
        path: "/home/nomad/.config/containers"
 | 
						|
        state: directory
 | 
						|
        owner: nomad
 | 
						|
        group: nomad
 | 
						|
        mode: '0755'
 | 
						|
      when: nomad_user_check is succeeded
 | 
						|
 | 
						|
    - name: 为 nomad 用户配置 Podman
 | 
						|
      copy:
 | 
						|
        content: |
 | 
						|
          [engine]
 | 
						|
          active_service = "system"
 | 
						|
          [engine.service_destinations]
 | 
						|
          [engine.service_destinations.system]
 | 
						|
          uri = "unix:///run/podman/podman.sock"          
 | 
						|
        dest: /home/nomad/.config/containers/containers.conf
 | 
						|
        owner: nomad
 | 
						|
        group: nomad
 | 
						|
        mode: '0644'
 | 
						|
      when: nomad_user_check is succeeded
 | 
						|
 | 
						|
    - name: 将 nomad 用户添加到 podman 组
 | 
						|
      user:
 | 
						|
        name: nomad
 | 
						|
        groups: podman
 | 
						|
        append: yes
 | 
						|
      when: nomad_user_check is succeeded
 | 
						|
      ignore_errors: yes
 | 
						|
 | 
						|
    - name: 创建 podman 组(如果不存在)
 | 
						|
      group:
 | 
						|
        name: podman
 | 
						|
        state: present
 | 
						|
      ignore_errors: yes
 | 
						|
 | 
						|
    - name: 设置 podman socket 目录权限
 | 
						|
      file:
 | 
						|
        path: /run/podman
 | 
						|
        state: directory
 | 
						|
        mode: '0755'
 | 
						|
        group: podman
 | 
						|
      ignore_errors: yes
 | 
						|
 | 
						|
    - name: 验证 Podman socket 权限
 | 
						|
      file:
 | 
						|
        path: /run/podman/podman.sock
 | 
						|
        mode: '066'
 | 
						|
      when: nomad_user_check is succeeded
 | 
						|
      ignore_errors: yes
 | 
						|
 | 
						|
    - name: 验证 Podman 安装
 | 
						|
      shell: podman --version
 | 
						|
      register: podman_version
 | 
						|
 | 
						|
    - name: 测试 Podman 功能
 | 
						|
      shell: podman info
 | 
						|
      register: podman_info
 | 
						|
      ignore_errors: yes
 | 
						|
 | 
						|
    - name: 显示配置结果
 | 
						|
      debug:
 | 
						|
        msg: |
 | 
						|
          ✅ 节点 {{ inventory_hostname }} Podman 配置完成
 | 
						|
          📦 Podman 版本: {{ podman_version.stdout }}
 | 
						|
          🐳 Podman 状态: {{ 'SUCCESS' if podman_info.rc == 0 else 'WARNING' }}
 | 
						|
          👤 Nomad 用户: {{ 'FOUND' if nomad_user_check is succeeded else 'NOT FOUND' }}           |