131 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
---
 | 
						|
- name: Install Nomad by direct download from HashiCorp
 | 
						|
  hosts: all
 | 
						|
  become: yes
 | 
						|
  vars:
 | 
						|
    nomad_user: "nomad"
 | 
						|
    nomad_group: "nomad"
 | 
						|
    nomad_home: "/opt/nomad"
 | 
						|
    nomad_data_dir: "/opt/nomad/data"
 | 
						|
    nomad_config_dir: "/etc/nomad.d"
 | 
						|
    nomad_datacenter: "dc1"
 | 
						|
    nomad_region: "global"
 | 
						|
    nomad_server_addresses:
 | 
						|
      - "100.116.158.95:4647"  # semaphore server address
 | 
						|
 | 
						|
  tasks:
 | 
						|
    - name: Create nomad user
 | 
						|
      user:
 | 
						|
        name: "{{ nomad_user }}"
 | 
						|
        group: "{{ nomad_group }}"
 | 
						|
        system: yes
 | 
						|
        shell: /bin/false
 | 
						|
        home: "{{ nomad_home }}"
 | 
						|
        create_home: yes
 | 
						|
 | 
						|
    - name: Create nomad directories
 | 
						|
      file:
 | 
						|
        path: "{{ item }}"
 | 
						|
        state: directory
 | 
						|
        owner: "{{ nomad_user }}"
 | 
						|
        group: "{{ nomad_group }}"
 | 
						|
        mode: '0755'
 | 
						|
      loop:
 | 
						|
        - "{{ nomad_home }}"
 | 
						|
        - "{{ nomad_data_dir }}"
 | 
						|
        - "{{ nomad_config_dir }}"
 | 
						|
        - /var/log/nomad
 | 
						|
 | 
						|
    - name: Install unzip package
 | 
						|
      apt:
 | 
						|
        name: unzip
 | 
						|
        state: present
 | 
						|
        update_cache: yes
 | 
						|
 | 
						|
    - name: Download Nomad binary
 | 
						|
      get_url:
 | 
						|
        url: "{{ nomad_url }}"
 | 
						|
        dest: "/tmp/nomad_{{ nomad_version }}_linux_amd64.zip"
 | 
						|
        mode: '0644'
 | 
						|
        timeout: 300
 | 
						|
 | 
						|
    - name: Extract Nomad binary
 | 
						|
      unarchive:
 | 
						|
        src: "/tmp/nomad_{{ nomad_version }}_linux_amd64.zip"
 | 
						|
        dest: /tmp
 | 
						|
        remote_src: yes
 | 
						|
 | 
						|
    - name: Copy Nomad binary to /usr/local/bin
 | 
						|
      copy:
 | 
						|
        src: /tmp/nomad
 | 
						|
        dest: /usr/local/bin/nomad
 | 
						|
        mode: '0755'
 | 
						|
        owner: root
 | 
						|
        group: root
 | 
						|
        remote_src: yes
 | 
						|
 | 
						|
    - name: Create Nomad client configuration
 | 
						|
      template:
 | 
						|
        src: templates/nomad-client.hcl.j2
 | 
						|
        dest: "{{ nomad_config_dir }}/nomad.hcl"
 | 
						|
        owner: "{{ nomad_user }}"
 | 
						|
        group: "{{ nomad_group }}"
 | 
						|
        mode: '0640'
 | 
						|
 | 
						|
    - name: Create Nomad systemd service
 | 
						|
      copy:
 | 
						|
        content: |
 | 
						|
          [Unit]
 | 
						|
          Description=Nomad
 | 
						|
          Documentation=https://www.nomadproject.io/
 | 
						|
          Requires=network-online.target
 | 
						|
          After=network-online.target
 | 
						|
          ConditionFileNotEmpty={{ nomad_config_dir }}/nomad.hcl
 | 
						|
 | 
						|
          [Service]
 | 
						|
          Type=notify
 | 
						|
          User={{ nomad_user }}
 | 
						|
          Group={{ nomad_group }}
 | 
						|
          ExecStart=/usr/local/bin/nomad agent -config={{ nomad_config_dir }}
 | 
						|
          ExecReload=/bin/kill -HUP $MAINPID
 | 
						|
          KillMode=process
 | 
						|
          Restart=on-failure
 | 
						|
          LimitNOFILE=65536
 | 
						|
 | 
						|
          [Install]
 | 
						|
          WantedBy=multi-user.target          
 | 
						|
        dest: /etc/systemd/system/nomad.service
 | 
						|
        mode: '0644'
 | 
						|
 | 
						|
    - name: Reload systemd daemon
 | 
						|
      systemd:
 | 
						|
        daemon_reload: yes
 | 
						|
 | 
						|
    - name: Enable and start Nomad service
 | 
						|
      systemd:
 | 
						|
        name: nomad
 | 
						|
        enabled: yes
 | 
						|
        state: started
 | 
						|
 | 
						|
    - name: Wait for Nomad to be ready
 | 
						|
      wait_for:
 | 
						|
        port: 4646
 | 
						|
        host: localhost
 | 
						|
        delay: 5
 | 
						|
        timeout: 60
 | 
						|
 | 
						|
    - name: Verify Nomad installation
 | 
						|
      command: /usr/local/bin/nomad version
 | 
						|
      register: nomad_version_output
 | 
						|
 | 
						|
    - name: Display Nomad version
 | 
						|
      debug:
 | 
						|
        msg: "{{ nomad_version_output.stdout }}"
 | 
						|
 | 
						|
    - name: Clean up downloaded files
 | 
						|
      file:
 | 
						|
        path: "{{ item }}"
 | 
						|
        state: absent
 | 
						|
      loop:
 | 
						|
        - "/tmp/nomad_{{ nomad_version }}_linux_amd64.zip"
 | 
						|
        - /tmp/nomad |