87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
---
 | 
						|
- name: Configure Nomad Podman Driver
 | 
						|
  hosts: target_nodes
 | 
						|
  become: yes
 | 
						|
  tasks:
 | 
						|
    - name: Create backup directory
 | 
						|
      file:
 | 
						|
        path: /etc/nomad.d/backup
 | 
						|
        state: directory
 | 
						|
        mode: '0755'
 | 
						|
    
 | 
						|
    - name: Backup current nomad.hcl
 | 
						|
      copy:
 | 
						|
        src: /etc/nomad.d/nomad.hcl
 | 
						|
        dest: "/etc/nomad.d/backup/nomad.hcl.bak.{{ ansible_date_time.iso8601 }}"
 | 
						|
        remote_src: yes
 | 
						|
    
 | 
						|
    - name: Create plugin directory
 | 
						|
      file:
 | 
						|
        path: /opt/nomad/plugins
 | 
						|
        state: directory
 | 
						|
        owner: nomad
 | 
						|
        group: nomad
 | 
						|
        mode: '0755'
 | 
						|
    
 | 
						|
    - name: Create symlink for podman driver
 | 
						|
      file:
 | 
						|
        src: /usr/bin/nomad-driver-podman
 | 
						|
        dest: /opt/nomad/plugins/nomad-driver-podman
 | 
						|
        state: link
 | 
						|
    
 | 
						|
    - name: Copy podman driver configuration
 | 
						|
      copy:
 | 
						|
        src: ../../files/podman-driver.hcl
 | 
						|
        dest: /etc/nomad.d/podman-driver.hcl
 | 
						|
        owner: root
 | 
						|
        group: root
 | 
						|
        mode: '0644'
 | 
						|
    
 | 
						|
    - name: Remove existing plugin_dir configuration
 | 
						|
      lineinfile:
 | 
						|
        path: /etc/nomad.d/nomad.hcl
 | 
						|
        regexp: '^plugin_dir = "/opt/nomad/data/plugins"'
 | 
						|
        state: absent
 | 
						|
 | 
						|
    - name: Configure Nomad to use Podman driver
 | 
						|
      blockinfile:
 | 
						|
        path: /etc/nomad.d/nomad.hcl
 | 
						|
        marker: "# {mark} ANSIBLE MANAGED BLOCK - PODMAN DRIVER"
 | 
						|
        block: |
 | 
						|
          plugin_dir = "/opt/nomad/plugins"
 | 
						|
 | 
						|
          plugin "podman" {
 | 
						|
            config {
 | 
						|
              volumes {
 | 
						|
                enabled = true
 | 
						|
              }
 | 
						|
              logging {
 | 
						|
                type = "journald"
 | 
						|
              }
 | 
						|
              gc {
 | 
						|
                container = true
 | 
						|
              }
 | 
						|
            }
 | 
						|
          }          
 | 
						|
      register: nomad_config_result
 | 
						|
    
 | 
						|
    - name: Restart nomad service
 | 
						|
      systemd:
 | 
						|
        name: nomad
 | 
						|
        state: restarted
 | 
						|
        enabled: yes
 | 
						|
    
 | 
						|
    - name: Wait for nomad to start
 | 
						|
      wait_for:
 | 
						|
        port: 4646
 | 
						|
        delay: 10
 | 
						|
        timeout: 60
 | 
						|
    
 | 
						|
    - name: Check nomad status
 | 
						|
      command: nomad node status
 | 
						|
      register: nomad_status
 | 
						|
      changed_when: false
 | 
						|
    
 | 
						|
    - name: Display nomad status
 | 
						|
      debug:
 | 
						|
        var: nomad_status.stdout_lines |