āĻ•āύāϏāĻžāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ⧇āϰ āϏāĻžāĻĨ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāĻž

āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

āϏāĻŽā§āĻĒā§āϰāϤāĻŋ, āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ⧇āϰ āϜāύāĻĒā§āϰāĻŋāϝāĻŧāϤāĻž āĻĻā§āϰ⧁āϤ āĻŦ⧃āĻĻā§āϧāĻŋ āĻĒāĻžāĻšā§āϛ⧇ - āφāϰāĻ“ āĻŦ⧇āĻļāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻŦāĻžāĻĄāĻŧāĻŋāϤ⧇ āĻāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāϛ⧇āĨ¤ āφāĻŽāĻŋ āύ⧋āĻŽā§āϝāĻžāĻĄā§‡āϰ āĻŽāϤ⧋ āĻāĻ•āϜāύ āĻ…āĻ°ā§āϕ⧇āĻ¸ā§āĻŸā§āϰ⧇āϟāϰāϕ⧇ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ•āϰāϤ⧇ āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞāĻžāĻŽ: āĻāϟāĻŋ āĻāĻŽāύ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤ āϝ⧇āĻ–āĻžāύ⧇ HashiCorp-āĻāϰ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϏāĻŽāĻžāϧāĻžāύ āϝ⧇āĻŽāύ āĻ­āĻ˛ā§āϟ āĻāĻŦāĻ‚ āĻ•āύāϏāĻžāϞ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹āϰ āĻĻāĻŋāĻ• āĻĨ⧇āϕ⧇ āϜāϟāĻŋāϞ āύāϝāĻŧ⧎ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ Nomad āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻŦ⧇, āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻĻ⧁āϟāĻŋ āύ⧋āĻĄ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ Gitlab āĻāϰ āϏāĻžāĻĨ⧇ Nomad āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻŦ⧇āĨ¤

āĻ•āύāϏāĻžāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ⧇āϰ āϏāĻžāĻĨ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāĻž

āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄ

āĻŸā§‡āĻ¸ā§āϟ āĻŦ⧇āĻžā§āϚ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻ•āϟ⧁: 2 CPU, 4 RAM, 50 Gb SSD āĻāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϏāĻš āϤāĻŋāύāϟāĻŋ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧāĨ¤ āϤāĻžāĻĻ⧇āϰ āύāĻžāĻŽ āĻāĻŦāĻ‚ āφāχāĻĒāĻŋ āĻ āĻŋāĻ•āĻžāύāĻž:

  1. nomad-livelinux-01: 172.30.0.5
  2. nomad-livelinux-02: 172.30.0.10
  3. consul-livelinux-01: 172.30.0.15

āϝāĻžāϝāĻžāĻŦāϰ, āĻ•āύāϏāĻžāϞ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤ āĻāĻ•āϟāĻŋ āϝāĻžāϝāĻžāĻŦāϰ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻž

āĻāϰ āĻŽā§ŒāϞāĻŋāĻ• āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ⧇āϰ āϏāĻšāϜāϤāĻž āϏāĻ¤ā§āĻ¤ā§āĻŦ⧇āĻ“, āφāĻŽāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋāϰ āĻ…āĻ–āĻŖā§āĻĄāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻāϟāĻŋ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻŦ: āφāϏāϞ⧇, āĻāϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĻā§āϰ⧁āϤ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ⧇āϰ āϜāĻ¨ā§āϝ āĻ–āϏāĻĄāĻŧāĻž āĻāĻŦāĻ‚ āύ⧋āϟ āĻĨ⧇āϕ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤

āĻ…āύ⧁āĻļā§€āϞāύ⧇ āĻāĻ—āĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āφāϗ⧇, āφāĻŽāϰāĻž āϤāĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻ• āĻ…āĻ‚āĻļ āύāĻŋāϝāĻŧ⧇ āφāϞ⧋āϚāύāĻž āĻ•āϰāĻŦ, āĻ•āĻžāϰāĻŖ āĻāχ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇āϰ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻŦā§‹āĻāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤

āφāĻŽāĻžāĻĻ⧇āϰ āĻĻ⧁āϟāĻŋ āϝāĻžāϝāĻžāĻŦāϰ āύ⧋āĻĄ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāϤ⧇ āϚāĻžāχ, āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇āϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āϜāύ - āĻāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āύāϏāĻžāϞ āĻĻāϰāĻ•āĻžāϰāĨ¤ āĻāχ āϟ⧁āϞ⧇āϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ⧇, āύāϤ⧁āύ āύ⧋āĻĄāϗ⧁āϞāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ•āϰāĻž āĻāĻŦāĻ‚ āϝ⧋āĻ— āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āϏāĻšāϜ āĻ•āĻžāϜ āĻšāϝāĻŧ⧇ āĻ“āϠ⧇: āϤ⧈āϰāĻŋ āĻ•āϰāĻž āύ⧋āĻŽā§āϝāĻžāĻĄ āύ⧋āĻĄ āĻ•āύāϏāĻžāϞ āĻāĻœā§‡āĻ¨ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰ⧇, āϤāĻžāϰāĻĒāϰ⧇ āĻāϟāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ āĻ…āϤāĻāĻŦ, āĻļ⧁āϰ⧁āϤ⧇ āφāĻŽāϰāĻž āĻ•āύāϏāĻžāϞ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ, āĻ“āϝāĻŧ⧇āĻŦ āĻĒā§āϝāĻžāύ⧇āϞ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• http āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻŦ (āĻāϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇), āϏ⧇āχāϏāĻžāĻĨ⧇ āύ⧋āĻŽā§āϝāĻžāĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ•āύāϏāĻžāϞ āĻāĻœā§‡āĻ¨ā§āϟāϰāĻž āύāĻŋāĻœā§‡āϰāĻžāχ, āĻĒāϰ⧇ āϝāĻž āφāĻŽāϰāĻž āĻļ⧁āϧ⧁ āϝāĻžāϝāĻžāĻŦāϰ⧇āϰ āĻĻāĻŋāϕ⧇ āĻāĻ—āĻŋāϝāĻŧ⧇ āϝāĻžāĻŦāĨ¤

HashiCorp-āĻāϰ āϟ⧁āϞ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϖ⧁āĻŦāχ āϏāĻšāϜ: āϏāĻžāϰāĻŽāĻ°ā§āĻŽā§‡, āφāĻŽāϰāĻž āĻļ⧁āϧ⧁ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞāϟāĻŋāϕ⧇ āĻŦāĻŋāύ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āύāĻŋāϝāĻŧ⧇ āϝāĻžāχ, āϟ⧁āϞ⧇āϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋāĨ¤

āĻ•āύāϏāĻžāϞ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻšā§‹āĻŽ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āĻāϟāĻŋ āĻŦ⧇āϰ āĻ•āϰ⧁āύ:

root@consul-livelinux-01:~# wget https://releases.hashicorp.com/consul/1.5.0/consul_1.5.0_linux_amd64.zip
root@consul-livelinux-01:~# unzip consul_1.5.0_linux_amd64.zip
root@consul-livelinux-01:~# mv consul /usr/local/bin/

āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻāĻ–āύ āφāϰāĻ“ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāĻœā§‡āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āύāϏāĻžāϞ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻ•āύāϏāĻžāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻžāĻĻ⧇āϰ keygen āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻ…āύāĻ¨ā§āϝ āϕ⧀ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

root@consul-livelinux-01:~# consul keygen

āĻ•āύāϏāĻžāϞ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āĻĻāĻŋāϕ⧇ āĻāĻ—āĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻ•, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻžāĻ āĻžāĻŽā§‹āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ /etc/consul.d/ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ:

/etc/consul.d/
├── bootstrap
│   └── config.json

āĻŦ⧁āϟāĻ¸ā§āĻŸā§āĻ°ā§āϝāĻžāĻĒ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ config.json āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āĻĨāĻžāĻ•āĻŦ⧇ - āĻāϤ⧇ āφāĻŽāϰāĻž āĻ•āύāϏāĻžāϞ āϏ⧇āϟāĻŋāĻ‚āϏ āϏ⧇āϟ āĻ•āϰāĻŦāĨ¤ āĻāϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁:

{
"bootstrap": true,
"server": true,
"datacenter": "dc1",
"data_dir": "/var/consul",
"encrypt": "your-key",
"log_level": "INFO",
"enable_syslog": true,
"start_join": ["172.30.0.15"]
}

āφāϏ⧁āύ āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ āĻŽā§‚āϞ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āĻ…āĻ°ā§āĻĨ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ•āϰāĻž āϝāĻžāĻ•:

  • āĻŦ⧁āϟāĻ¸ā§āĻŸā§āĻ°ā§āϝāĻžāĻĒ: āϏāĻ¤ā§āϝāĨ¤ āύāϤ⧁āύ āύ⧋āĻĄ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻĨāĻžāĻ•āϞ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϝ⧋āϜāύ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύāĨ¤ āφāĻŽāĻŋ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻŋ āϝ⧇ āφāĻŽāϰāĻž āĻāĻ–āĻžāύ⧇ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āύ⧋āĻĄā§‡āϰ āϏāĻ āĻŋāĻ• āϏāĻ‚āĻ–ā§āϝāĻž āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŋ āύāĻžāĨ¤
  • āϏāĻžāĻ°ā§āĻ­āĻžāϰ: āϏāĻ¤ā§āϝāĨ¤ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻŽā§‹āĻĄ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύāĨ¤ āĻāχ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύ⧇ āĻ•āύāϏāĻžāϞ āĻāχ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ āĻāĻ•āĻŽāĻžāĻ¤ā§āϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻŦāĻ‚ āĻŽāĻžāĻ¸ā§āϟāĻžāϰ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇, Nomad's VM āĻšāĻŦ⧇ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟāĨ¤
  • āϤāĻĨā§āϝ āϕ⧇āĻ¨ā§āĻĻā§āϰ: dc1āĨ¤ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĄā§‡āϟāĻž āϏ⧇āĻ¨ā§āϟāĻžāϰ⧇āϰ āύāĻžāĻŽ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰ⧁āύāĨ¤ āĻāϟāĻŋ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āωāĻ­āϝāĻŧ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āχ āĻ…āĻ­āĻŋāĻ¨ā§āύ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤
  • āϏāĻ™ā§āϕ⧇āϤāĻžāϝāĻŧāĻŋāϤ āĻ•āϰ⧁āύ:āϤ⧋āĻŽāĻžāϰ āϚāĻžāĻŦāĻŋ. āϕ⧀, āϝāĻž āĻ…āĻŦāĻļā§āϝāχ āĻ…āύāĻ¨ā§āϝ āĻšāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āϏāĻŽāĻ¸ā§āϤ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻŽā§‡āϞ⧇āĨ¤ āĻ•āύāϏāĻžāϞ āϕ⧀āĻœā§‡āύ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • start_join. āĻāχ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ, āφāĻŽāϰāĻž IP āĻ āĻŋāĻ•āĻžāύāĻžāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻŋ āϝ⧇āĻ–āĻžāύ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ āĻāχ āĻŽā§āĻšā§āĻ°ā§āϤ⧇, āφāĻŽāϰāĻž āϕ⧇āĻŦāϞ āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻ āĻŋāĻ•āĻžāύāĻž āϰ⧇āϖ⧇āĻ›āĻŋāĨ¤

āĻāχ āĻŽā§āĻšā§āĻ°ā§āϤ⧇, āφāĻŽāϰāĻž āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ•āύāϏāĻžāϞ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ:

root@consul-livelinux-01:~# /usr/local/bin/consul agent -config-dir /etc/consul.d/bootstrap -ui

āĻāϟāĻŋ āĻāĻ–āύ āĻĄāĻŋāĻŦāĻžāĻ— āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āĻ­āĻžāϞ āωāĻĒāĻžāϝāĻŧ, āϤāĻŦ⧇, āĻāϟāĻŋ āϏ⧁āĻ¸ā§āĻĒāĻˇā§āϟ āĻ•āĻžāϰāϪ⧇ āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻ­āĻŋāĻ¤ā§āϤāĻŋāϤ⧇ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻĄ āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āύāϏāĻžāϞ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝāĻžāĻ•:

root@consul-livelinux-01:~# nano /etc/systemd/system/consul.service

Consul.service āĻĢāĻžāχāϞ⧇āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁:

[Unit]
Description=Consul Startup process
After=network.target
 
[Service]
Type=simple
ExecStart=/bin/bash -c '/usr/local/bin/consul agent -config-dir /etc/consul.d/bootstrap -ui' 
TimeoutStartSec=0
 
[Install]
WantedBy=default.target

systemctl āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āύāϏāĻžāϞ āϚāĻžāϞāĻžāύ:

root@consul-livelinux-01:~# systemctl start consul

āφāĻŽāϰāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŋ: āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϚāĻžāϞ⧁ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ, āĻāĻŦāĻ‚ āĻ•āύāϏāĻžāϞ āϏāĻĻāĻ¸ā§āϝāĻĻ⧇āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰāϟāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻšāĻŦ⧇:

root@consul-livelinux:/etc/consul.d# consul members
consul-livelinux    172.30.0.15:8301  alive   server  1.5.0  2         dc1  <all>

āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ: Nginx āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻĒā§āϰāĻ•ā§āϏāĻŋ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻž, http āĻ…āύ⧁āĻŽā§‹āĻĻāύāĨ¤ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ nginx āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ /etc/nginx/sites-enabled āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāĻš āĻāĻ•āϟāĻŋ consul.conf āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ:

upstream consul-auth {
    server localhost:8500;
}

server {

    server_name consul.doman.name;
    
    location / {
      proxy_pass http://consul-auth;
      proxy_set_header Host $host;
      auth_basic_user_file /etc/nginx/.htpasswd;
      auth_basic "Password-protected Area";
    }
}

āĻāĻ•āϟāĻŋ .htpasswd āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āύāĻžāĻŽ āĻāĻŦāĻ‚ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āϭ⧁āϞāĻŦ⧇āύ āύāĻžā§ˇ āĻāχ āφāχāĻŸā§‡āĻŽāϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āϝāĻžāϤ⧇ āĻ“āϝāĻŧ⧇āĻŦ āĻĒā§āϝāĻžāύ⧇āϞāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄā§‹āĻŽā§‡āύ āϜāĻžāύ⧇āύ āĻāĻŽāύ āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāϞāĻŦā§āϧ āύāĻž āĻšāϝāĻŧ⧎ āϝāĻžāχāĻšā§‹āĻ•, āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āφāĻŽāĻžāĻĻ⧇āϰ āĻāϟāĻŋ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻ–ā§āϝāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ - āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āύ⧋āĻŽāĻžāĻĄā§‡ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻŦ āύāĻžāĨ¤ āφāĻŽāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇, āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ āĻāĻŦāĻ‚ āύ⧋āĻŽā§āϝāĻžāĻĄ āωāĻ­āϝāĻŧāχ āϕ⧇āĻŦāϞ āϧ⧂āϏāϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āϰāϝāĻŧ⧇āϛ⧇, āϤāĻžāχ āĻāĻ–āĻžāύ⧇ āϕ⧋āύāĻ“ āϏāĻŽāĻ¸ā§āϝāĻž āύ⧇āχāĨ¤

āĻ…āĻŦāĻļāĻŋāĻˇā§āϟ āĻĻ⧁āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻ•āύāϏāĻžāϞ āĻāĻœā§‡āĻ¨ā§āϟ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύāĨ¤ āφāĻŽāϰāĻž āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ⧇āϰ āϏāĻžāĻĨ⧇ āϧāĻžāĻĒāϗ⧁āϞāĻŋ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻŋ:

root@nomad-livelinux-01:~# wget https://releases.hashicorp.com/consul/1.5.0/consul_1.5.0_linux_amd64.zip
root@nomad-livelinux-01:~# unzip consul_1.5.0_linux_amd64.zip
root@nomad-livelinux-01:~# mv consul /usr/local/bin/

āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĻ⧃āĻļā§āϝ āĻ…āύ⧁āϏāĻžāϰ⧇, āφāĻŽāϰāĻž āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻžāĻ āĻžāĻŽā§‹ āϏāĻš /etc/consul.d āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ:

/etc/consul.d/
├── client
│   └── config.json

config.json āĻĢāĻžāχāϞ⧇āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁:

{
    "datacenter": "dc1",
    "data_dir": "/opt/consul",
    "log_level": "DEBUG",
    "node_name": "nomad-livelinux-01",
    "server": false,
    "encrypt": "your-private-key",
    "domain": "livelinux",
    "addresses": {
      "dns": "127.0.0.1",
      "https": "0.0.0.0",
      "grpc": "127.0.0.1",
      "http": "127.0.0.1"
    },
    "bind_addr": "172.30.0.5", # ĐģĐžĐēаĐģҌĐŊŅ‹Đš Đ°Đ´Ņ€Đĩҁ вĐŧ
    "start_join": ["172.30.0.15"], # ŅƒĐ´Đ°ĐģĐĩĐŊĐŊŅ‹Đš Đ°Đ´Ņ€Đĩҁ ĐēĐžĐŊҁ҃Đģ ҁĐĩŅ€Đ˛ĐĩŅ€Đ°
    "ports": {
      "dns": 53
     }

āφāĻŽāϰāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĢāĻžāχāϞ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻāĻ—āĻŋāϝāĻŧ⧇ āϝāĻžāχ, āĻāϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āĻšāϞ:

/etc/systemd/system/consul.service:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
User=root
Group=root
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/client
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

āφāĻŽāϰāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ•āύāϏāĻžāϞ āĻļ⧁āϰ⧁ āĻ•āϰāĻŋāĨ¤ āĻāĻ–āύ, āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻŽāĻžāĻĻ⧇āϰ nsul āϏāĻĻāĻ¸ā§āϝāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĻ⧇āĻ–āϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϰ āĻŽāĻžāύ⧇ āĻšāĻŦ⧇ āϝ⧇ āϤāĻŋāύāĻŋ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻšāϝāĻŧ⧇āϛ⧇āύāĨ¤ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻāĻ•āχ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āφāĻŽāϰāĻž Nomad āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

Nomad āĻāϰ āφāϰāĻ“ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻāϰ āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ⧇ āĻŦāĻ°ā§āĻŖāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĻ⧁āϟāĻŋ āϐāϤāĻŋāĻšā§āϝāĻ—āϤ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻĒāĻĻā§āϧāϤāĻŋ āφāϛ⧇: āĻāĻ•āϟāĻŋ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻ‰ā§ŽāϏ āĻĨ⧇āϕ⧇ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻžāĨ¤ āφāĻŽāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻĒāĻĨ āĻŦ⧇āϛ⧇ āύ⧇āĻŦāĨ¤

āĻŽāĻ¨ā§āϤāĻŦā§āϝ: āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āϖ⧁āĻŦ āĻĻā§āϰ⧁āϤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ•āϰāϛ⧇, āύāϤ⧁āύ āφāĻĒāĻĄā§‡āϟ āĻĒā§āϰāĻžāϝāĻŧāχ āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ, āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ“āϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāĻŦ⧇āĨ¤ āĻ…āϤāĻāĻŦ, āĻĒāĻĄāĻŧāĻžāϰ āφāϗ⧇, āφāĻŽāĻŋ āĻāχ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ Nomad āĻāϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āĻāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāχāĨ¤

root@nomad-livelinux-01:~# wget https://releases.hashicorp.com/nomad/0.9.1/nomad_0.9.1_linux_amd64.zip
root@nomad-livelinux-01:~# unzip nomad_0.9.1_linux_amd64.zip
root@nomad-livelinux-01:~# mv nomad /usr/local/bin/
root@nomad-livelinux-01:~# nomad -autocomplete-install
root@nomad-livelinux-01:~# complete -C /usr/local/bin/nomad nomad
root@nomad-livelinux-01:~# mkdir /etc/nomad.d

āφāύāĻĒā§āϝāĻžāĻ• āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ 65 āĻāĻŽāĻŦāĻŋ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ āĻĒāĻžāĻŦ - āĻāϟāĻŋ āĻ…āĻŦāĻļā§āϝāχ /usr/local/bin āĻ āϏāϰāĻžāύ⧋ āĻšāĻŦ⧇āĨ¤

āφāϏ⧁āύ Nomad āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĄā§‡āϟāĻž āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĢāĻžāχāϞāϟāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻ•āϰāĻŋ (āĻāϟāĻŋ āϏāĻŽā§āĻ­āĻŦāϤ āĻļ⧁āϰ⧁āϤ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĨāĻžāĻ•āĻŦ⧇ āύāĻž):

root@nomad-livelinux-01:~# mkdir --parents /opt/nomad
root@nomad-livelinux-01:~# nano /etc/systemd/system/nomad.service

āϏ⧇āĻ–āĻžāύ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϞāĻžāχāύ āϏāĻ¨ā§āύāĻŋāĻŦ⧇āĻļ āĻ•āϰāĻžāύ:

[Unit]
Description=Nomad
Documentation=https://nomadproject.io/docs/
Wants=network-online.target
After=network-online.target

[Service]
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=infinity
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
StartLimitBurst=3
StartLimitIntervalSec=10
TasksMax=infinity

[Install]
WantedBy=multi-user.target

āϝāĻžāχāĻšā§‹āĻ•, āφāĻŽāϰāĻž āϝāĻžāϝāĻžāĻŦāϰ āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϤāĻžāĻĄāĻŧāĻžāĻšā§āĻĄāĻŧā§‹ āĻ•āϰāĻ›āĻŋ āύāĻž - āφāĻŽāϰāĻž āĻāĻ–āύāĻ“ āĻāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋāύāĻŋ:

root@nomad-livelinux-01:~# mkdir --parents /etc/nomad.d
root@nomad-livelinux-01:~# chmod 700 /etc/nomad.d
root@nomad-livelinux-01:~# nano /etc/nomad.d/nomad.hcl
root@nomad-livelinux-01:~# nano /etc/nomad.d/server.hcl

āĻĢāϞāĻ¸ā§āĻŦāϰ⧂āĻĒ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻ—āĻ āύ āύāĻŋāĻŽā§āύāϰ⧂āĻĒ āĻšāĻŦ⧇:

/etc/nomad.d/
├── nomad.hcl
└── server.hcl

nomad.hcl āĻĢāĻžāχāϞ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇:

datacenter = "dc1"
data_dir = "/opt/nomad"

Server.hcl āĻĢāĻžāχāϞ⧇āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁:

server {
  enabled = true
  bootstrap_expect = 1
}

consul {
  address             = "127.0.0.1:8500"
  server_service_name = "nomad"
  client_service_name = "nomad-client"
  auto_advertise      = true
  server_auto_join    = true
  client_auto_join    = true
}

bind_addr = "127.0.0.1" 

advertise {
  http = "172.30.0.5"
}

client {
  enabled = true
}

āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞāϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āϭ⧁āϞāĻŦ⧇āύ āύāĻž - āφāĻĒāύāĻžāϕ⧇ āϏ⧇āĻ–āĻžāύ⧇ http āύāĻŋāĻ°ā§āĻĻ⧇āĻļ⧇āϰ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

āĻāχ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āĻļ⧇āώ āϜāĻŋāύāĻŋāϏāϟāĻŋ āĻšāϞ āĻĒā§āϰāĻ•ā§āϏāĻŋāϤ⧇ Nginx āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻž āĻāĻŦāĻ‚ HTTP āĻ…āύ⧁āĻŽā§‹āĻĻāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāĨ¤ nomad.conf āĻĢāĻžāχāϞ⧇āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁:

upstream nomad-auth {
        server 172.30.0.5:4646;
}

server {

        server_name nomad.domain.name;
        
        location / {
	        proxy_pass http://nomad-auth;
	        proxy_set_header Host $host;
	        auth_basic_user_file /etc/nginx/.htpasswd;
		   auth_basic "Password-protected Area";
        }
        
}

āĻāĻ–āύ āφāĻŽāϰāĻž āĻŦāĻšāĻŋāϰāĻžāĻ—āϤ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ“āϝāĻŧ⧇āĻŦ āĻĒā§āϝāĻžāύ⧇āϞ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āϝāĻžāύ:

āĻ•āύāϏāĻžāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ⧇āϰ āϏāĻžāĻĨ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāĻž
āĻ›āĻŦāĻŋ 1āĨ¤ āĻāĻ•āϟāĻŋ Nomad āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻž

āωāĻ­āϝāĻŧ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻĒā§āϝāĻžāύ⧇āϞ⧇ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇, āφāĻŽāϰāĻž āϝāĻžāϝāĻžāĻŦāϰ āύ⧋āĻĄ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āϰ āφāωāϟāĻĒ⧁āĻŸā§‡ āĻāĻ•āχ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ:

āĻ•āύāϏāĻžāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ⧇āϰ āϏāĻžāĻĨ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāĻž
āĻ›āĻŦāĻŋ 2āĨ¤ āϝāĻžāϝāĻžāĻŦāϰ āύ⧋āĻĄ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āφāωāϟāĻĒ⧁āϟ

āĻ•āύāϏāĻžāϞ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻŋ? āϚāϞ⧁āύ āĻĻ⧇āϖ⧇ āύ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ•āĨ¤ āĻ•āύāϏāĻžāϞ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻĒā§āϝāĻžāύ⧇āϞ⧇ āϝāĻžāύ, āύ⧋āĻĄ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āϝāĻžāύ:
āĻ•āύāϏāĻžāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ⧇āϰ āϏāĻžāĻĨ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāĻž
āĻ›āĻŦāĻŋ 3āĨ¤ āĻ•āύāϏāĻžāϞ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āύ⧋āĻĄā§‡āϰ āϤāĻžāϞāĻŋāĻ•āĻž

āĻāĻ–āύ āφāĻŽāϰāĻž āĻ•āύāϏāĻžāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϝ⧋āϗ⧇ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āϝāĻžāϝāĻžāĻŦāϰ āĻ•āĻžāϜ āĻ•āϰāĻ›āĻŋāĨ¤ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇, āφāĻŽāϰāĻž āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻ…āĻ‚āĻļ⧇ āύāĻžāĻŽāĻŦ: āφāĻŽāϰāĻž āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ āĻĨ⧇āϕ⧇ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĄāĻ•āĻžāϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϗ⧁āϞāĻŋāϰ āĻĄā§‡āϞāĻŋāĻ­āĻžāϰāĻŋ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻŦ āĻāĻŦāĻ‚ āĻāϰ āĻ•āĻŋāϛ⧁ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ¸ā§āĻŦāϤāĻ¨ā§āĻ¤ā§āϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇āĻ“ āĻ•āĻĨāĻž āĻŦāϞāĻŦāĨ¤

āĻāĻ•āϟāĻŋ āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ āϰāĻžāύāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻž

āύ⧋āĻŽā§āϝāĻžāĻĄā§‡ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇, āφāĻŽāϰāĻž āĻ­āĻŋāϤāϰ⧇ āύ⧋āĻŽā§āϝāĻžāĻĄā§‡āϰ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ āϏāĻš āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āϰāĻžāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ (āĻāĻ–āĻžāύ⧇, āϝāĻžāχāĻšā§‹āĻ•, āĻšā§āϝāĻžāĻļāĻŋāĻ•āĻ°ā§āĻĒ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋāϰ āφāϰāĻ“ āĻāĻ•āϟāĻŋ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ - āĻĒ⧃āĻĨāĻ•āĻ­āĻžāĻŦ⧇ āϤāĻžāϰāĻžāχ āĻāĻ•āĻŽāĻžāĻ¤ā§āϰ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ)āĨ¤ āϰāĻžāύāĻžāϰ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āĻāϟāĻŋ āφāĻĒāϞ⧋āĻĄ āĻ•āϰ⧁āύāĨ¤ āφāϏ⧁āύ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāĻš āĻāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĄāĻ•āĻžāϰāĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ:


FROM alpine:3.9
RUN apk add --update --no-cache libc6-compat gettext
COPY nomad /usr/local/bin/nomad

āĻāĻ•āχ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇, .gitlab-ci.yml āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ:

variables:
  DOCKER_IMAGE: nomad/nomad-deploy
  DOCKER_REGISTRY: registry.domain.name
 

stages:
  - build

build:
  stage: build
  image: ${DOCKER_REGISTRY}/nomad/alpine:3
  script:
    - tag=${DOCKER_REGISTRY}/${DOCKER_IMAGE}:latest
    - docker build --pull -t ${tag} -f Dockerfile .
    - docker push ${tag}

āĻĢāϞāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻŽāĻžāĻĻ⧇āϰ āĻ—āĻŋāϟāĻ˛ā§āϝāĻžāĻŦ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ āύ⧋āĻŽā§āϝāĻžāĻĄ āϰāĻžāύāĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āωāĻĒāϞāĻŦā§āϧ āϚāĻŋāĻ¤ā§āϰ āĻĨāĻžāĻ•āĻŦ⧇, āĻāĻ–āύ āφāĻŽāϰāĻž āϏāϰāĻžāϏāϰāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰāĻŋ, āĻāĻ•āϟāĻŋ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻāĻŦāĻ‚ āύ⧋āĻŽā§āϝāĻžāĻĄā§‡āϰ āϝāĻžāϝāĻžāĻŦāϰ āĻ•āĻžāϜ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϏ⧇āϟāφāĻĒ

āύ⧋āĻŽā§āϝāĻžāĻĄā§‡āϰ āϚāĻžāĻ•āϰāĻŋāϰ āĻĢāĻžāχāϞ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āφāĻŽāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻŦ⧇āĻļ āφāĻĻāĻŋāĻŽ āĻšāĻŦ⧇: āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ•āĻžāϜ āύāĻŋāϝāĻŧ⧇ āĻ—āĻ āĻŋāϤ āĻšāĻŦ⧇āĨ¤ .gitlab-ci āĻāϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āύāĻŋāĻŽā§āύāϰ⧂āĻĒ āĻšāĻŦ⧇:

variables:
  NOMAD_ADDR: http://nomad.address.service:4646
  DOCKER_REGISTRY: registry.domain.name
  DOCKER_IMAGE: example/project

stages:
  - build
  - deploy

build:
  stage: build
  image: ${DOCKER_REGISTRY}/nomad-runner/alpine:3
  script:
    - tag=${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${CI_COMMIT_SHORT_SHA}
    - docker build --pull -t ${tag} -f Dockerfile .
    - docker push ${tag}


deploy:
  stage: deploy
  image: registry.example.com/nomad/nomad-runner:latest
  script:
    - envsubst '${CI_COMMIT_SHORT_SHA}' < project.nomad > job.nomad
    - cat job.nomad
    - nomad validate job.nomad
    - nomad plan job.nomad || if [ $? -eq 255 ]; then exit 255; else echo "success"; fi
    - nomad run job.nomad
  environment:
    name: production
  allow_failure: false
  when: manual

āĻāĻ–āĻžāύ⧇, āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϟāĻŋ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻŦ⧇ āφāĻĒāύāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻāϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻ…āĻ¨ā§āϝāĻĻāĻŋāϕ⧇, āĻĒāĻžāχāĻĒāϞāĻžāχāύ āĻĻ⧁āϟāĻŋ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ āύāĻŋāϝāĻŧ⧇ āĻ—āĻ āĻŋāϤ: āϚāĻŋāĻ¤ā§āϰ⧇āϰ āϏāĻŽāĻžāĻŦ⧇āĻļ āĻĨ⧇āϕ⧇ āϝāĻžāϝāĻžāĻŦāϰ āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤ āĻĒā§āϰāĻĨāĻŽ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇, āφāĻŽāϰāĻž āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋāϕ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ āĻĒ⧁āĻļ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇, āφāĻŽāϰāĻž āύ⧋āĻŽā§āϝāĻžāĻĄā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ āĻ•āϰāĻŋāĨ¤

job "monitoring-status" {
    datacenters = ["dc1"]
    migrate {
        max_parallel = 3
        health_check = "checks"
        min_healthy_time = "15s"
        healthy_deadline = "5m"
    }

    group "zhadan.ltd" {
        count = 1
        update {
            max_parallel      = 1
            min_healthy_time  = "30s"
            healthy_deadline  = "5m"
            progress_deadline = "10m"
            auto_revert       = true
        }
        task "service-monitoring" {
            driver = "docker"

            config {
                image = "registry.domain.name/example/project:${CI_COMMIT_SHORT_SHA}"
                force_pull = true
                auth {
                    username = "gitlab_user"
                    password = "gitlab_password"
                }
                port_map {
                    http = 8000
                }
            }
            resources {
                network {
                    port "http" {}
                }
            }
        }
    }
}

āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āφāĻŽāĻžāϰ āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āφāϛ⧇ āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜāϟāĻŋāϰ āϏāĻĢāϞ āϟāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāϕ⧇ āĻāϤ⧇ āϞāĻ— āχāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ āĻ­āĻ˛ā§āĻŸā§‡ āϞāĻ—āχāύ āĻāĻŦāĻ‚ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻļ⧇āώ āĻ•āϰāĻž āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻāϟāĻŋāϕ⧇ Nomad-āĻāϰ āϏāĻžāĻĨ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāĻžāĨ¤ āϝāĻžāϝāĻžāĻŦāϰ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ­āĻ˛ā§āϟ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇āĨ¤ āϤāĻŦ⧇ āĻĒā§āϰāĻĨāĻŽā§‡, āĻ­āĻ˛ā§āĻŸā§‡āχ, āφāĻŽāϰāĻž āϝāĻžāϝāĻžāĻŦāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āύ⧀āϤāĻŋāϗ⧁āϞāĻŋ āϏ⧇āϟ āĻ•āϰāĻŦ, āϏ⧇āϗ⧁āϞāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇:

# Download the policy and token role
$ curl https://nomadproject.io/data/vault/nomad-server-policy.hcl -O -s -L
$ curl https://nomadproject.io/data/vault/nomad-cluster-role.json -O -s -L

# Write the policy to Vault
$ vault policy write nomad-server nomad-server-policy.hcl

# Create the token role with Vault
$ vault write /auth/token/roles/nomad-cluster @nomad-cluster-role.json

āĻāĻ–āύ, āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āύ⧀āϤāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻŽāϰāĻž job.nomad āĻĢāĻžāχāϞ⧇āϰ āϟāĻžāĻ¸ā§āĻ• āĻŦā§āϞāϕ⧇ āĻ­āĻ˛ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻŋāĻ—ā§āϰ⧇āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻŦ:

vault {
  enabled = true
  address = "https://vault.domain.name:8200"
  token = "token"
}

āφāĻŽāĻŋ āĻŸā§‹āϕ⧇āύ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻāĻ–āĻžāύ⧇ āϞāĻŋāĻ–āĻŋ, āϝāĻžāϝāĻžāĻŦāϰ āĻāĻœā§‡āĻ¨ā§āϟ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŸā§‹āϕ⧇āύ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻ“ āϰāϝāĻŧ⧇āϛ⧇:

$ VAULT_TOKEN=<token> nomad agent -config /path/to/config

āĻāĻ–āύ āφāĻŽāϰāĻž āĻ­āĻ˛ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āϕ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻ…āĻĒāĻžāϰ⧇āĻļāύ⧇āϰ āύ⧀āϤāĻŋāϟāĻŋ āϏāĻšāϜ: āφāĻŽāϰāĻž Nomad āĻ•āĻžāĻœā§‡ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ āϝāĻž āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇āϰ āĻŽāĻžāύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŦ⧇, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ:

template {
                data = <<EOH
{{with secret "secrets/pipeline-keys"}}
REGISTRY_LOGIN="{{ .Data.REGISTRY_LOGIN }}"
REGISTRY_PASSWORD="{{ .Data.REGISTRY_LOGIN }}{{ end }}"

EOH
    destination = "secrets/service-name.env"
    env = true
}

āĻāχ āϏāĻšāϜ āĻĒāĻĻā§āϧāϤāĻŋāϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ⧇, āφāĻĒāύāĻŋ āύ⧋āĻŽā§āϝāĻžāĻĄ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϏāϰāĻŦāϰāĻžāĻš āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āφāĻŽāĻŋ āĻŦāϞāĻŦ āϝ⧇ āĻ•āĻŋāϛ⧁ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āφāĻŽāĻŋ āύ⧋āĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāϤāĻŋ āϏāĻšāĻžāύ⧁āĻ­ā§‚āϤāĻŋ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāĻŋ - āĻāϟāĻŋ āϛ⧋āϟ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āφāϰāĻ“ āωāĻĒāϝ⧁āĻ•ā§āϤ āϝ⧇āĻ–āĻžāύ⧇ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ…āϏ⧁āĻŦāĻŋāϧāĻž āϏ⧃āĻˇā§āϟāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āωāĻĒāϞāĻŦā§āϧāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤ āωāĻĒāϰāĻ¨ā§āϤ⧁, Nomad āύāϤ⧁āύāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ - āĻāϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āϏāĻšāϜāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻ•āĻŋāϛ⧁ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āφāĻŽāĻŋ āĻāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϗ⧁āϞāĻŋāϰ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽā§āĻŽā§āĻ–ā§€āύ āĻšāχ - āĻ…āύ⧇āĻ• āĻŽā§ŒāϞāĻŋāĻ• āĻĢāĻžāĻ‚āĻļāύ āϕ⧇āĻŦāϞ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āύ⧇āχ āĻŦāĻž āϤāĻžāϰāĻž āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āύāĻžāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āφāĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻ•āϰāĻŋ āϝ⧇ āϝāĻžāϝāĻžāĻŦāϰ⧇āϰ āĻŦāĻŋāĻ•āĻžāĻļ āĻ…āĻŦā§āϝāĻžāĻšāϤ āĻĨāĻžāĻ•āĻŦ⧇ āĻāĻŦāĻ‚ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻāϟāĻŋ āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋ āĻ…āĻ°ā§āϜāύ āĻ•āϰāĻŦ⧇āĨ¤

āϞ⧇āĻ–āĻ•: āχāϞāĻŋāϝāĻŧāĻž āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāĻŋāĻ­, āĻ…ā§āϝāĻžāϞ⧇āĻ•ā§āϏāĻŋ āĻāĻžāĻĻāĻžāύ āĻāĻŦāĻ‚ āϞāĻžāχāĻ­ āϞāĻŋāύāĻžāĻ•ā§āϏ āϟāĻŋāĻŽ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻŽā§āĻĒāĻžāĻĻāĻŋāϤ


āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster