100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
| ---
 | |
| - name: 测试将 Podman 切换到 Snap 版本 (ch2 节点)
 | |
|   hosts: ch2
 | |
|   become: yes
 | |
|   gather_facts: yes
 | |
| 
 | |
|   tasks:
 | |
|     - name: 检查当前 Podman 版本和安装方式
 | |
|       shell: |
 | |
|         echo "=== 当前 Podman 信息 ==="
 | |
|         podman --version
 | |
|         echo "安装路径: $(which podman)"
 | |
|         echo "=== Snap 状态 ==="
 | |
|         which snap || echo "snap 未安装"
 | |
|         snap list podman 2>/dev/null || echo "Podman snap 未安装"
 | |
|         echo "=== 包管理器状态 ==="
 | |
|         dpkg -l | grep podman || echo "未通过 apt 安装"        
 | |
|       register: current_status
 | |
| 
 | |
|     - name: 显示当前状态
 | |
|       debug:
 | |
|         msg: "{{ current_status.stdout }}"
 | |
| 
 | |
|     - name: 检查 snap 是否已安装
 | |
|       shell: which snap
 | |
|       register: snap_check
 | |
|       ignore_errors: yes
 | |
|       changed_when: false
 | |
| 
 | |
|     - name: 安装 snapd (如果未安装)
 | |
|       apt:
 | |
|         name: snapd
 | |
|         state: present
 | |
|       when: snap_check.rc != 0
 | |
| 
 | |
|     - name: 确保 snapd 服务运行
 | |
|       systemd:
 | |
|         name: snapd
 | |
|         state: started
 | |
|         enabled: yes
 | |
| 
 | |
|     - name: 检查当前 Podman snap 版本
 | |
|       shell: snap info podman
 | |
|       register: snap_podman_info
 | |
|       ignore_errors: yes
 | |
| 
 | |
|     - name: 显示可用的 Podman snap 版本
 | |
|       debug:
 | |
|         msg: "{{ snap_podman_info.stdout if snap_podman_info.rc == 0 else '无法获取 snap podman 信息' }}"
 | |
| 
 | |
|     - name: 停止当前 Podman 相关服务
 | |
|       systemd:
 | |
|         name: podman
 | |
|         state: stopped
 | |
|       ignore_errors: yes
 | |
| 
 | |
|     - name: 移除通过包管理器安装的 Podman
 | |
|       apt:
 | |
|         name: podman
 | |
|         state: absent
 | |
|         purge: yes
 | |
|       ignore_errors: yes
 | |
| 
 | |
|     - name: 安装 Podman snap (edge 通道)
 | |
|       snap:
 | |
|         name: podman
 | |
|         state: present
 | |
|         classic: yes
 | |
|         channel: edge
 | |
| 
 | |
|     - name: 创建符号链接 (确保 podman 命令可用)
 | |
|       file:
 | |
|         src: /snap/bin/podman
 | |
|         dest: /usr/local/bin/podman
 | |
|         state: link
 | |
|         force: yes
 | |
| 
 | |
|     - name: 验证 Snap Podman 安装
 | |
|       shell: |
 | |
|         /snap/bin/podman --version
 | |
|         which podman        
 | |
|       register: snap_podman_verify
 | |
| 
 | |
|     - name: 显示安装结果
 | |
|       debug:
 | |
|         msg: |
 | |
|           ✅ Snap Podman 安装完成
 | |
|           🚀 版本: {{ snap_podman_verify.stdout_lines[0] }}
 | |
|           📍 路径: {{ snap_podman_verify.stdout_lines[1] }}          
 | |
| 
 | |
|     - name: 测试 Podman 基本功能
 | |
|       shell: |
 | |
|         /snap/bin/podman version
 | |
|         /snap/bin/podman info --format json | jq -r '.host.arch'        
 | |
|       register: podman_test
 | |
|       ignore_errors: yes
 | |
| 
 | |
|     - name: 显示测试结果
 | |
|       debug:
 | |
|         msg: "Podman 测试结果: {{ podman_test.stdout if podman_test.rc == 0 else '测试失败' }}" |