cambio de direcciós IPs e rol nomad
This commit is contained in:
parent
3b87eca4c7
commit
5d910363dd
7
nomad.yml
Normal file
7
nomad.yml
Normal file
@ -0,0 +1,7 @@
|
||||
- name: Instala Consul
|
||||
hosts: nomad_node
|
||||
any_errors_fatal: true
|
||||
become: true
|
||||
become_user: root
|
||||
roles:
|
||||
- nomad
|
@ -3,9 +3,19 @@ ansible_connection=ssh
|
||||
ansible_user=alpine
|
||||
ansible_ssh_private_key_file=~/.ssh/alpine-cloud
|
||||
|
||||
[admin]
|
||||
192.168.1.111 vm_name=hashi-1 vm_ip=192.168.1.111
|
||||
|
||||
[client]
|
||||
192.168.1.112 vm_name=hashi-2 vm_ip=192.168.1.112
|
||||
|
||||
[consul_node]
|
||||
192.168.1.71 consul_iface=eth0 consul_node_role=server vm_name=hashi-1 vm_ip=192.168.1.71
|
||||
192.168.1.72 consul_iface=eth0 consul_node_role=client vm_name=hashi-2 vm_ip=192.168.1.72
|
||||
192.168.1.111 consul_iface=eth0 consul_node_role=server vm_name=hashi-1 vm_ip=192.168.1.111
|
||||
192.168.1.112 consul_iface=eth0 consul_node_role=client vm_name=hashi-2 vm_ip=192.168.1.112
|
||||
|
||||
[consul_node:vars]
|
||||
consul_dc_name=tr4ck
|
||||
|
||||
[nomad_node]
|
||||
192.168.1.111 vm_name=hashi-1 vm_ip=192.168.1.111
|
||||
192.168.1.112 vm_name=hashi-2 vm_ip=192.168.1.112
|
||||
|
11
roles/nomad/defaults/main.yml
Normal file
11
roles/nomad/defaults/main.yml
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
nomad_version: 1.6.2
|
||||
nomad_etc_dir: /etc/nomad.d
|
||||
nomad_data_dir: /opt/nomad
|
||||
nomad_datacenter: tr4ck
|
||||
|
||||
nomad_namespaces:
|
||||
admin:
|
||||
name: admin
|
||||
client:
|
||||
name: client
|
18
roles/nomad/tasks/cni.yml
Normal file
18
roles/nomad/tasks/cni.yml
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
- name: create cni folders
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
loop:
|
||||
- /opt/cni/bin
|
||||
- /opt/cni/config
|
||||
become: true
|
||||
|
||||
- name: extract plugins
|
||||
ansible.builtin.unarchive:
|
||||
remote_src: true
|
||||
src: "https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-{{ pkg_arch_map[ansible_architecture] }}-v1.3.0.tgz"
|
||||
dest: "/opt/cni/bin"
|
||||
become: true
|
27
roles/nomad/tasks/install_alpine_binary.yml
Normal file
27
roles/nomad/tasks/install_alpine_binary.yml
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
- name: ensure dirs are there
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
become: true
|
||||
loop:
|
||||
- "{{ nomad_etc_dir }}"
|
||||
- "{{ nomad_data_dir }}"
|
||||
|
||||
- name: install nomad apk package
|
||||
community.general.apk:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
update_cache: yes
|
||||
loop:
|
||||
- python3-pip
|
||||
- nomad
|
||||
become: true
|
||||
|
||||
- name: install python-nomad
|
||||
ansible.builtin.pip:
|
||||
name: python-nomad
|
||||
state: latest
|
||||
become: true
|
46
roles/nomad/tasks/main.yml
Normal file
46
roles/nomad/tasks/main.yml
Normal file
@ -0,0 +1,46 @@
|
||||
---
|
||||
- name: check version installed
|
||||
ansible.builtin.command:
|
||||
cmd: nomad --version
|
||||
register: nomad_version_installed
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: install nomad
|
||||
ansible.builtin.include_tasks: "install_{{ ansible_distribution | lower }}_binary.yml"
|
||||
when: nomad_installed_version is not defined or nomad_version not in nomad_version_installed.stdout
|
||||
|
||||
- name: setup configs
|
||||
ansible.builtin.include_tasks: "setup_nomad_configs.yml"
|
||||
|
||||
- name: install cni plugins
|
||||
ansible.builtin.include_tasks: "cni.yml"
|
||||
|
||||
- name: enable nomad
|
||||
ansible.builtin.service:
|
||||
name: nomad
|
||||
state: restarted
|
||||
enabled: true
|
||||
become: true
|
||||
|
||||
- name: set namespaces
|
||||
ansible.builtin.command:
|
||||
cmd: nomad namespace apply -descr "{{ item }} namespace" {{ item }}
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
loop: "{{ nomad_namespaces }}"
|
||||
run_once: true
|
||||
|
||||
#- name: Setup csi plugins
|
||||
# ansible.builtin.include_tasks: "csi_plugins.yml"
|
||||
# loop:
|
||||
# - azure_csi_controller
|
||||
# - azure_csi_node
|
||||
# when: nomad_csi_volumes is defined
|
||||
# run_once: true
|
||||
#
|
||||
#- name: Create csi volumes
|
||||
# ansible.builtin.include_tasks: "csi_volumes.yml"
|
||||
# loop: "{{ nomad_csi_volumes }}"
|
||||
# when: nomad_csi_volumes is defined
|
||||
# run_once: true
|
9
roles/nomad/tasks/setup_nomad_configs.yml
Normal file
9
roles/nomad/tasks/setup_nomad_configs.yml
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
- name: setup nomad server/worker config
|
||||
ansible.builtin.template:
|
||||
src: "nomad.hcl.j2"
|
||||
dest: "{{ nomad_etc_dir }}/nomad.hcl"
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0660
|
||||
become: true
|
59
roles/nomad/templates/nomad.hcl.j2
Normal file
59
roles/nomad/templates/nomad.hcl.j2
Normal file
@ -0,0 +1,59 @@
|
||||
datacenter = "{{ nomad_datacenter }}"
|
||||
data_dir = "{{ nomad_data_dir }}"
|
||||
bind_addr = "{{ vm_ip }}"
|
||||
name = "{{ vm_name }}"
|
||||
advertise {
|
||||
http = "{{ vm_ip }}"
|
||||
rpc = "{{ vm_ip }}"
|
||||
serf = "{{ vm_ip }}"
|
||||
}
|
||||
|
||||
{% if 'admin' in group_names %}
|
||||
server {
|
||||
enabled = true
|
||||
bootstrap_expect = 3
|
||||
retry_join = [{% for host in groups['admin'] %}"{{ hostvars[host]['vm_ip'] }}"{% if not loop.last %},{% endif %}{% endfor %}]
|
||||
}
|
||||
{% endif %}
|
||||
client {
|
||||
enabled = true
|
||||
host_network "public" {
|
||||
cidr = "{{ network_cidr }}"
|
||||
}
|
||||
meta {
|
||||
admin = {{ "1" if 'admin' in group_names else "0" }}
|
||||
}
|
||||
}
|
||||
consul {
|
||||
address = "{{ vm_ip}}:8500"
|
||||
}
|
||||
plugin "docker" {
|
||||
config {
|
||||
volumes {
|
||||
enabled = true
|
||||
selinuxlabel = "z"
|
||||
}
|
||||
extra_labels = ["job_name", "job_id", "task_group_name", "task_name", "namespace", "node_name", "node_id"]
|
||||
gc {
|
||||
image = true
|
||||
image_delay = "3m"
|
||||
container = true
|
||||
|
||||
dangling_containers {
|
||||
enabled = true
|
||||
dry_run = false
|
||||
period = "5m"
|
||||
creation_grace = "5m"
|
||||
}
|
||||
}
|
||||
|
||||
allow_privileged = true
|
||||
}
|
||||
}
|
||||
telemetry {
|
||||
collection_interval = "1s"
|
||||
disable_hostname = true
|
||||
prometheus_metrics = true
|
||||
publish_allocation_metrics = true
|
||||
publish_node_metrics = true
|
||||
}
|
Loading…
Reference in New Issue
Block a user