105 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
---
 | 
						|
- name: 部署韩国节点Nomad配置
 | 
						|
  hosts: ch2,ch3
 | 
						|
  become: yes
 | 
						|
  gather_facts: no
 | 
						|
  vars:
 | 
						|
    nomad_config_dir: "/etc/nomad.d"
 | 
						|
    nomad_config_file: "{{ nomad_config_dir }}/nomad.hcl"
 | 
						|
    source_config_dir: "/root/mgmt/infrastructure/configs/server"
 | 
						|
    
 | 
						|
  tasks:
 | 
						|
    - name: 获取主机名短名称(去掉后缀)
 | 
						|
      set_fact:
 | 
						|
        short_hostname: "{{ inventory_hostname | regex_replace('\\$', '') }}"
 | 
						|
 | 
						|
    - name: 确保 Nomad 配置目录存在
 | 
						|
      file:
 | 
						|
        path: "{{ nomad_config_dir }}"
 | 
						|
        state: directory
 | 
						|
        owner: root
 | 
						|
        group: root
 | 
						|
        mode: '0755'
 | 
						|
 | 
						|
    - name: 部署 Nomad 配置文件到韩国节点
 | 
						|
      copy:
 | 
						|
        src: "{{ source_config_dir }}/nomad-{{ short_hostname }}.hcl"
 | 
						|
        dest: "{{ nomad_config_file }}"
 | 
						|
        owner: root
 | 
						|
        group: root
 | 
						|
        mode: '0644'
 | 
						|
        backup: yes
 | 
						|
      notify: restart nomad
 | 
						|
 | 
						|
    - name: 检查 Nomad 二进制文件位置
 | 
						|
      shell: which nomad || find /usr -name nomad 2>/dev/null | head -1
 | 
						|
      register: nomad_binary_path
 | 
						|
      failed_when: nomad_binary_path.stdout == ""
 | 
						|
 | 
						|
    - name: 创建/更新 Nomad systemd 服务文件
 | 
						|
      copy:
 | 
						|
        dest: "/etc/systemd/system/nomad.service"
 | 
						|
        owner: root
 | 
						|
        group: root
 | 
						|
        mode: '0644'
 | 
						|
        content: |
 | 
						|
          [Unit]
 | 
						|
          Description=Nomad
 | 
						|
          Documentation=https://www.nomadproject.io/
 | 
						|
          Requires=network-online.target
 | 
						|
          After=network-online.target
 | 
						|
          
 | 
						|
          [Service]
 | 
						|
          Type=notify
 | 
						|
          User=root
 | 
						|
          Group=root
 | 
						|
          ExecStart={{ nomad_binary_path.stdout }} agent -config=/etc/nomad.d/nomad.hcl
 | 
						|
          ExecReload=/bin/kill -HUP $MAINPID
 | 
						|
          KillMode=process
 | 
						|
          Restart=on-failure
 | 
						|
          LimitNOFILE=65536
 | 
						|
          
 | 
						|
          [Install]
 | 
						|
          WantedBy=multi-user.target          
 | 
						|
      notify: restart nomad
 | 
						|
 | 
						|
    - name: 确保 Nomad 数据目录存在
 | 
						|
      file:
 | 
						|
        path: "/opt/nomad/data"
 | 
						|
        state: directory
 | 
						|
        owner: root
 | 
						|
        group: root
 | 
						|
        mode: '0755'
 | 
						|
 | 
						|
    - name: 重新加载 systemd daemon
 | 
						|
      systemd:
 | 
						|
        daemon_reload: yes
 | 
						|
 | 
						|
    - name: 启用并启动 Nomad 服务
 | 
						|
      systemd:
 | 
						|
        name: nomad
 | 
						|
        enabled: yes
 | 
						|
        state: started
 | 
						|
 | 
						|
    - name: 等待 Nomad 服务启动
 | 
						|
      wait_for:
 | 
						|
        port: 4646
 | 
						|
        host: "{{ ansible_host }}"
 | 
						|
        delay: 5
 | 
						|
        timeout: 30
 | 
						|
      ignore_errors: yes
 | 
						|
 | 
						|
    - name: 显示 Nomad 服务状态
 | 
						|
      command: systemctl status nomad
 | 
						|
      register: nomad_status
 | 
						|
      changed_when: false
 | 
						|
 | 
						|
    - name: 显示 Nomad 服务状态信息
 | 
						|
      debug:
 | 
						|
        var: nomad_status.stdout_lines
 | 
						|
 | 
						|
  handlers:
 | 
						|
    - name: restart nomad
 | 
						|
      systemd:
 | 
						|
        name: nomad
 | 
						|
        state: restarted |