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 |