From 686ae05ce7a8ab2252b6d1aab6fb2008e4de8ac0 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Mon, 3 Jul 2023 17:27:57 +0530 Subject: [PATCH] feat: deploy centos --- centos/.gitignore | 2 + centos/.terraform.lock.hcl | 60 ++++ centos/Makefile | 37 ++ centos/ansible/.gitignore | 158 +++++++++ centos/ansible/init.sh | 19 + centos/ansible/playbook.yml | 117 +++++++ centos/ansible/shutdown.yml | 8 + centos/centos.plan | Bin 0 -> 14856 bytes centos/cloud_init.cfg | 51 +++ centos/conf.tf | 141 ++++++++ centos/network_config.cfg | 4 + centos/plan | Bin 0 -> 8386 bytes centos/requirements.txt | 286 +++++++++++++++ centos/scripts/on.sh | 7 + centos/templates/hosts.yml.tftpl | 4 + centos/terraform.tfstate | 9 + centos/terraform.tfstate.backup | 576 +++++++++++++++++++++++++++++++ 17 files changed, 1479 insertions(+) create mode 100644 centos/.gitignore create mode 100644 centos/.terraform.lock.hcl create mode 100644 centos/Makefile create mode 100644 centos/ansible/.gitignore create mode 100755 centos/ansible/init.sh create mode 100644 centos/ansible/playbook.yml create mode 100644 centos/ansible/shutdown.yml create mode 100644 centos/centos.plan create mode 100644 centos/cloud_init.cfg create mode 100644 centos/conf.tf create mode 100644 centos/network_config.cfg create mode 100644 centos/plan create mode 100644 centos/requirements.txt create mode 100755 centos/scripts/on.sh create mode 100644 centos/templates/hosts.yml.tftpl create mode 100644 centos/terraform.tfstate create mode 100644 centos/terraform.tfstate.backup diff --git a/centos/.gitignore b/centos/.gitignore new file mode 100644 index 0000000..4ff84f6 --- /dev/null +++ b/centos/.gitignore @@ -0,0 +1,2 @@ +.terraform +terraform.tfstate terraform.tfstate.backup diff --git a/centos/.terraform.lock.hcl b/centos/.terraform.lock.hcl new file mode 100644 index 0000000..c656267 --- /dev/null +++ b/centos/.terraform.lock.hcl @@ -0,0 +1,60 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/dmacvicar/libvirt" { + version = "0.7.1" + constraints = "~> 0.7.0" + hashes = [ + "h1:1yEJVPVFkRkbRY63+sFRAWau/eJ0xlecHWLCV8spkWU=", + "zh:1c59f2ab68da6326637ee8b03433e84af76b3e3562f251a7f2aa239a7b262a8d", + "zh:236e24ecf036e99d9d1e2081a39dc9cb4b8993850a37141a1449f20750f883d6", + "zh:4519c22b1f00c1d37d60ac6c2cb7ad5ab9dbcd44a80b4f61e68aacb54eae017d", + "zh:54de4e3c979c32af1dc71ec2846912f669a28bdb0990e8a3c1fb8fea4ede7b61", + "zh:6270a757bcf4e1f9efe47726cf0caefba30a25e59d151103cf03d1656325783c", + "zh:68b8586d5b29c0a1cb7c608a309b38db911449c072d60eee9e40e01881f1c23a", + "zh:724ba2290fea704714378e9363541420c36091e790c7f39150cde8987d4e0754", + "zh:7b6860c92376cdad98273aab4bea62546622e08f50733e4b2e58a7a859d3b49d", + "zh:986a0a4f8d9511c64bcac8010337deb43110b4c2f91969b2491fd9edc290b60e", + "zh:aff0f6f24d69cd97a44cd6059edaf355769fbb8a7643a6db4d52c9a94f98e194", + "zh:c46ca3f8384d06c13a7ed3d4b83c65b4f8dccbf9d5f624843b68d176add5c5c2", + "zh:ef310534e7d38153aca4ce31655b52a6e6c4d76f32e49732c96b62e9de1ee843", + "zh:f1566b094f4267ef2674889d874962dd41e0cba55251645e16d003c77ca8a19c", + "zh:f2e019df7b537069828c5537c481e5b7f41d2404eef6fe5c86702c20900b303d", + ] +} + +provider "registry.terraform.io/hashicorp/local" { + version = "2.4.0" + hashes = [ + "h1:R97FTYETo88sT2VHfMgkPU3lzCsZLunPftjSI5vfKe8=", + "zh:53604cd29cb92538668fe09565c739358dc53ca56f9f11312b9d7de81e48fab9", + "zh:66a46e9c508716a1c98efbf793092f03d50049fa4a83cd6b2251e9a06aca2acf", + "zh:70a6f6a852dd83768d0778ce9817d81d4b3f073fab8fa570bff92dcb0824f732", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:82a803f2f484c8b766e2e9c32343e9c89b91997b9f8d2697f9f3837f62926b35", + "zh:9708a4e40d6cc4b8afd1352e5186e6e1502f6ae599867c120967aebe9d90ed04", + "zh:973f65ce0d67c585f4ec250c1e634c9b22d9c4288b484ee2a871d7fa1e317406", + "zh:c8fa0f98f9316e4cfef082aa9b785ba16e36ff754d6aba8b456dab9500e671c6", + "zh:cfa5342a5f5188b20db246c73ac823918c189468e1382cb3c48a9c0c08fc5bf7", + "zh:e0e2b477c7e899c63b06b38cd8684a893d834d6d0b5e9b033cedc06dd7ffe9e2", + "zh:f62d7d05ea1ee566f732505200ab38d94315a4add27947a60afa29860822d3fc", + "zh:fa7ce69dde358e172bd719014ad637634bbdabc49363104f4fca759b4b73f2ce", + ] +} + +provider "registry.terraform.io/hashicorp/template" { + version = "2.2.0" + hashes = [ + "h1:94qn780bi1qjrbC3uQtjJh3Wkfwd5+tTtJHOb7KTg9w=", + "zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386", + "zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53", + "zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603", + "zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16", + "zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776", + "zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451", + "zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae", + "zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde", + "zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d", + "zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2", + ] +} diff --git a/centos/Makefile b/centos/Makefile new file mode 100644 index 0000000..dc00964 --- /dev/null +++ b/centos/Makefile @@ -0,0 +1,37 @@ +default: + echo yes | terraform destroy + terraform plan --out=plan + terraform apply plan + +inventory: + terraform plan --out=plan + terraform apply plan + +configure: + ansible-playbook -i ./ansible/inventory/hosts.ini -f 10 ./ansible/playbook.yml + +check: + ansible-playbook --check ./ansible/playbook.yml + +lint: + terraform fmt + ansible-lint --write ./ansible/playbook.yml + ansible-lint --write ./ansible/shutdown.yml + . ./venv/bin/activate && black tests/ + +on: + ./scripts/on.sh + virsh list + +shutdown: + ansible-playbook -i ./ansible/inventory/hosts.ini -f 10 ./ansible/shutdown.yml + +# ./ansible/playbook.yml + +test: + . ./venv/bin/activate && \ + cd tests/ && \ + py.test --hosts='ansible://all' \ + -n 10 \ + --verbose \ + --ansible-inventory='../ansible/inventory/hosts.ini' diff --git a/centos/ansible/.gitignore b/centos/ansible/.gitignore new file mode 100644 index 0000000..b899908 --- /dev/null +++ b/centos/ansible/.gitignore @@ -0,0 +1,158 @@ +inventory/ +.env +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ +keys +htmlcov/ +tmp/ +static/ diff --git a/centos/ansible/init.sh b/centos/ansible/init.sh new file mode 100755 index 0000000..c17443e --- /dev/null +++ b/centos/ansible/init.sh @@ -0,0 +1,19 @@ +#!/bin/bash + + +ansible live \ + -m ansible.builtin.ping \ + -i ./ansible/inventory + +ansible live \ + -m ansible.builtin.apt \ + -f 10 \ + -a "update_cache=yes upgrade=safe" \ + -i ./ansible/inventory/ + + +ansible live \ + -m ansible.builtin.apt \ + -f 10 \ + -a "name=nginx,git,curl,wget,vim,zip,nginx" \ + -i ./ansible/inventory/ diff --git a/centos/ansible/playbook.yml b/centos/ansible/playbook.yml new file mode 100644 index 0000000..b01bbce --- /dev/null +++ b/centos/ansible/playbook.yml @@ -0,0 +1,117 @@ +--- +- name: Configure webservers + hosts: debainbasic + remote_user: root + + tasks: + - name: Ensure all VMs are reachable + ansible.builtin.ping: + - name: Update package cache + ansible.builtin.apt: + update_cache: true + upgrade: safe + + - name: Install git, zip, nginx, wget, curl & other utils + ansible.builtin.apt: + update_cache: true + pkg: + - git + - nginx + - wget + - curl + - gpg + - ca-certificates + - zip + - python3-pip + - virtualenv + - ufw + - fail2ban + - nginx + - dnsutils + - bind9 + - python3-setuptools + + - name: Create /etc/apt/keyrings dir + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + recurse: true + + - name: Add Docker GPG apt Key + ansible.builtin.apt_key: + url: https://download.docker.com/linux/debian/gpg + state: present + + - name: Add Docker Repository + ansible.builtin.apt_repository: + repo: deb https://download.docker.com/linux/debian buster stable + state: present + + - name: Update apt and install docker-ce + ansible.builtin.apt: + name: docker-ce + update_cache: true + + - name: Install Docker Module for Python + ansible.builtin.pip: + name: docker + + - name: Set logging + community.general.ufw: + logging: "on" + + - name: Allow port 22 and enable UFW + community.general.ufw: + state: enabled + rule: allow + proto: tcp + port: "22" + + - name: Allow port 80 + community.general.ufw: + state: enabled + proto: tcp + rule: allow + port: "80" + + - name: Allow port 443 + community.general.ufw: + state: enabled + proto: tcp + rule: allow + port: "443" + + - name: Allow port 53 + community.general.ufw: + state: enabled + proto: udp + rule: allow + port: "43" + + - name: Enable and start ufw service + ansible.builtin.service: + name: ufw + enabled: true + state: started + + - name: Enable and start nginx service + ansible.builtin.service: + name: nginx + enabled: true + state: started + + - name: Enable and start bind9 + ansible.builtin.service: + name: bind9 + enabled: true + state: + started + + # - debug: var=ansible_all_ipv4_addresses + # - debug: var=ansible_default_ipv4.address + + handlers: + - name: Restart bind9 + ansible.builtin.service: + name: nginx + state: restarted diff --git a/centos/ansible/shutdown.yml b/centos/ansible/shutdown.yml new file mode 100644 index 0000000..94b351b --- /dev/null +++ b/centos/ansible/shutdown.yml @@ -0,0 +1,8 @@ +--- +- name: Shutdown machines + hosts: debainbasic + remote_user: root + + tasks: + - name: Ensure all VMs are reachable + community.general.shutdown: diff --git a/centos/centos.plan b/centos/centos.plan new file mode 100644 index 0000000000000000000000000000000000000000..33ab1448cc5329781778596c20b1a9e67f6d6dc3 GIT binary patch literal 14856 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 https://cloudinit.readthedocs.io/en/latest/topics/examples.html +# ****************************** +# +# This is the configuration syntax that the write_files module +# will know how to understand. encoding can be given b64 or gzip or (gz+b64). +# The content will be decoded accordingly and then written to the path that is +# provided. +# +# Note: Content strings here are truncated for example purposes. +#users: +# - default +## - name: root +#### plain_text_passwd: foobar12 +## ssh_import_id: +## - gh:realaravinth +# - name: atm +# plain_text_passwd: foobar12 +# gecos: Aravinth Manivannan +# groups: users, admin +# sudo: ALL=(ALL) NOPASSWD:ALL +# lock_password: false +# ssh_import_id: +# - gh:realaravinth + + + +users: +- name: root + ssh_authorized_keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/wXdHpwpY/4ubhYTmuNdGepQpj1kchvTUTApxMZyfyVW4uzrPRTYsle1y9QbTBV35qLkNajRC/wmC5/xPchdXpsJpuD9st1HMhLeR8qwaPyptiYJYT+z/WisWw2k6oWhG3QKvPoRtBdW9nhZnkG+O6zkuGXiRHpS7j2VVboDPpWEe1UdELQFVCwfraRal2g3ENFZ/9V1UrW/4ahRnQnSxERplZUm/fgSxQtmXubTkW68ut7yasBsrKFffMm8JztW0tWgTlTKONd3LCjv4juM0t5+cJDotNDnUR86Tq2PG8io7no/h8BWtazmjdpfGgn02ibX26BkdU0LDEYbJt5q9/Fh9TGk2ZwcMQeyepO1AWQgkmHXZWZELqu6MLQpqdtsOjHp9k0MeSpuIbdwzgf10Ydy7vK1z8irS24tVNNnJaMBwOlVOPwfyztHRADPkFcv2lKSjS1uyKR0FIkV8Kvs4txaIjmwv2LfMg6lF5W6j3ZPLyeE4cplJP0DDjzorSanu31xVnqVb3A8V9awsJ/4H7d59bI99c7QHL4K3fBVP3O0gqd31xAVRsdGs5Tj2P+RpiI6o5JJiOa1+DuBdWzrVIXYchQ30ZjaJp1wTNsYLmAsjeYuQZE2tf1xvywdzD4MB4avugDEWikzRWN9V5PHDZr1bamTCCjOrb2PRCd7eSQ== aravinth7820@gmail.com +- name: atm + gecos: Aravinth Manivannan + groups: users, admin + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + lock_passwd: true + plain_text_passwd: fooabr12 + ssh_authorized_keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/wXdHpwpY/4ubhYTmuNdGepQpj1kchvTUTApxMZyfyVW4uzrPRTYsle1y9QbTBV35qLkNajRC/wmC5/xPchdXpsJpuD9st1HMhLeR8qwaPyptiYJYT+z/WisWw2k6oWhG3QKvPoRtBdW9nhZnkG+O6zkuGXiRHpS7j2VVboDPpWEe1UdELQFVCwfraRal2g3ENFZ/9V1UrW/4ahRnQnSxERplZUm/fgSxQtmXubTkW68ut7yasBsrKFffMm8JztW0tWgTlTKONd3LCjv4juM0t5+cJDotNDnUR86Tq2PG8io7no/h8BWtazmjdpfGgn02ibX26BkdU0LDEYbJt5q9/Fh9TGk2ZwcMQeyepO1AWQgkmHXZWZELqu6MLQpqdtsOjHp9k0MeSpuIbdwzgf10Ydy7vK1z8irS24tVNNnJaMBwOlVOPwfyztHRADPkFcv2lKSjS1uyKR0FIkV8Kvs4txaIjmwv2LfMg6lF5W6j3ZPLyeE4cplJP0DDjzorSanu31xVnqVb3A8V9awsJ/4H7d59bI99c7QHL4K3fBVP3O0gqd31xAVRsdGs5Tj2P+RpiI6o5JJiOa1+DuBdWzrVIXYchQ30ZjaJp1wTNsYLmAsjeYuQZE2tf1xvywdzD4MB4avugDEWikzRWN9V5PHDZr1bamTCCjOrb2PRCd7eSQ== aravinth7820@gmail.com + +ssh_pwauth: true +chpasswd: + list: | + root:foobar12 + atm:foobar12 + expire: False diff --git a/centos/conf.tf b/centos/conf.tf new file mode 100644 index 0000000..047bd0f --- /dev/null +++ b/centos/conf.tf @@ -0,0 +1,141 @@ +terraform { + required_version = ">= 0.13" + required_providers { + libvirt = { + source = "dmacvicar/libvirt" + version = "~> 0.7.0" + } + } +} + +# instance the provider +provider "libvirt" { + uri = "qemu:///system" +} + +resource "libvirt_pool" "centos_basic" { + name = "centos_basic" + type = "dir" + path = "/home/atm/code/libvirt/pool/centos_basic" + +} + +# We fetch the latest centos_basic release image from their mirrors +resource "libvirt_volume" "centos8-qcow2" { + name = "centos8-qcow2" + pool = libvirt_pool.centos_basic.name + source = "/home/atm/disk-images/CentOS-8-ec2-8.4.2105-20210603.0.x86_64.qcow2" + format = "qcow2" +} + + + +variable "vm_count" { + default = 3 +} + + +resource "libvirt_volume" "domain_centos_basic_volume" { + name = "domain_centos_basic_volume-${count.index}" + base_volume_id = libvirt_volume.centos8-qcow2.id + count = var.vm_count + size = 85368709120 +} + +data "template_file" "user_data" { + template = file("${path.module}/cloud_init.cfg") +} + +data "template_file" "network_config" { + template = file("${path.module}/network_config.cfg") +} + +# for more info about paramater check this out +# https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r/cloudinit.html.markdown +# Use CloudInit to add our ssh-key to the instance +# you can add also meta_data field +resource "libvirt_cloudinit_disk" "commoninit" { + name = "commoninit.iso" + user_data = data.template_file.user_data.rendered + network_config = data.template_file.network_config.rendered + pool = libvirt_pool.centos_basic.name +} + +# Create the machine +resource "libvirt_domain" "domain_centos_basic" { + count = var.vm_count + + name = "centos_basic_${count.index}" + memory = "3000" + vcpu = 4 + + cloudinit = libvirt_cloudinit_disk.commoninit.id + + network_interface { + network_name = "default" + wait_for_lease = true + } + + # IMPORTANT: this is a known bug on cloud images, since they expect a console + # we need to pass it + # https://bugs.launchpad.net/cloud-images/+bug/1573095 + console { + type = "pty" + target_port = "0" + target_type = "serial" + } + + console { + type = "pty" + target_type = "virtio" + target_port = "1" + } + + disk { + volume_id = element(libvirt_volume.domain_centos_basic_volume.*.id, count.index) + } + + graphics { + type = "spice" + listen_type = "address" + autoport = true + } +} + +locals { + vm_ips = [for i in libvirt_domain.domain_centos_basic : i.network_interface.0.addresses[0]] + vm_names = [for i in libvirt_domain.domain_centos_basic : i.name] + # vm_names = zipmap(vm_names, vm_ips) + vm_map = [for i in libvirt_domain.domain_centos_basic : { + ip = i.network_interface.0.addresses[0], + name = i.name + }] + # libvirt_domain.domain_centos_basic.*.network_interface.0.addresses[0] + + +} + +output "centos_ip" { + #value = [local.vm_ips, local.vm_names] + value = local.vm_map +} + +resource "local_file" "hosts_yml" { + # content = <<-EOT + #[debain_basic_webservers]: + # hosts: + # %{ for vm in libvirt_domain.domain_centos_basic ~} + # ${vm.name}: + # ansible_host: ${vm.network_interface.0.addresses[0]} + # ansible_user: root + # %{ endfor ~} + # EOT + content = templatefile("./templates/hosts.yml.tftpl", + { + vm_ips = local.vm_ips, + vm_names = local.vm_names, + vms = local.vm_map + }) + + filename = "./ansible/inventory/hosts.ini" +} diff --git a/centos/network_config.cfg b/centos/network_config.cfg new file mode 100644 index 0000000..5b2cbca --- /dev/null +++ b/centos/network_config.cfg @@ -0,0 +1,4 @@ +version: 2 +ethernets: + ens3: + dhcp4: true diff --git a/centos/plan b/centos/plan new file mode 100644 index 0000000000000000000000000000000000000000..a88e7851de001bbdb53dc797ad398b325c7ace44 GIT binary patch literal 8386 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 YZ79pZ{Jtju0QUFD`F(#Vq