Skip to content

IAC-InfrastructureAsCode/infra-tools

Repository files navigation

Infra Tools

Collection sets of tools for provision & deployment instances, vm & container.

Features

  • Ansible
  • Dockerframework
  • DocKube
  • HelmCharts
  • Kubespray (K8S Deployment)
  • Nomad
  • Packer
  • Portainer (Docker UI Tools)
  • Terragrunt (Terraform Wrapper)

How To Run Ansible

  • Goto folder ansible
cd ./ansible 
  • Setup remote_user in ansible/ansible.cfg
remote_user=root # root / ubuntu 
  • Deploy Ansible Playbook
############################### # Static Inventory # ############################### ##### DocKube ##### ### Master ansible-playbook -i inventories/dockube/inventory.ini playbook/dockube_nsq-nsqadmin.yaml --limit "172.212.0.6" ### Node ansible-playbook -i inventories/dockube/inventory.ini playbook/dockube_nsq-nsqd.yaml --limit "172.212.0.8" ### NFS ansible-playbook -i inventories/dockube/inventory.ini playbook/dockube_nsq-nsqlookupd.yaml --limit "172.212.0.11" ### All ansible-playbook -i inventories/dockube/inventory.ini playbook/dockube_nsq-nsqadmin.yaml ansible-playbook -i inventories/dockube/inventory.ini playbook/dockube_nsq-nsqd.yaml ansible-playbook -i inventories/dockube/inventory.ini playbook/dockube_nsq-nsqlookupd.yaml ansible-playbook -i inventories/dockube/inventory.ini playbook/dockube_golang.yaml ansible-playbook -i inventories/dockube/inventory.ini playbook/dockube_docker.yaml ##### {{datacenter}} ##### ansible-playbook -i inventories/{{datacenter}}/inventory.ini playbook/tag_nsq-nsqadmin.yaml ansible-playbook -i inventories/{{datacenter}}/inventory.ini playbook/tag_nsq-nsqd.yaml ansible-playbook -i inventories/{{datacenter}}/inventory.ini playbook/tag_nsq-nsqlookupd.yaml ansible-playbook -i inventories/{{datacenter}}/inventory.ini playbook/tag_golang.yaml ansible-playbook -i inventories/{{datacenter}}/inventory.ini playbook/tag_docker.yaml ##### Aliyun (Alibaba Cloud) ##### ansible-playbook -i inventories/aliyun/inventory.ini playbook/tag_nsq-nsqadmin.yaml ansible-playbook -i inventories/aliyun/inventory.ini playbook/tag_nsq-nsqd.yaml ansible-playbook -i inventories/aliyun/inventory.ini playbook/tag_nsq-nsqlookupd.yaml ansible-playbook -i inventories/aliyun/inventory.ini playbook/tag_golang.yaml ansible-playbook -i inventories/aliyun/inventory.ini playbook/tag_docker.yaml ##### GCP ##### ansible-playbook -i inventories/gcp/inventory.ini playbook/tag_nsq-nsqadmin.yaml ansible-playbook -i inventories/gcp/inventory.ini playbook/tag_nsq-nsqd.yaml ansible-playbook -i inventories/gcp/inventory.ini playbook/tag_nsq-nsqlookupd.yaml ansible-playbook -i inventories/gcp/inventory.ini playbook/tag_golang.yaml ansible-playbook -i inventories/gcp/inventory.ini playbook/tag_docker.yaml ############################### # Dynamic Inventory # ############################### ##### {{datacenter}} ##### ansible-playbook -i inventories/{{datacenter}}/ playbook/tag_docker.yaml ##### Aliyun (Alibaba Cloud) ##### ansible-playbook -i inventories/aliyun/alicloud.py playbook/tag_docker.yaml ansible-playbook -i inventories/aliyun/alicloud.py playbook/tag_nsq-nsqadmin.yaml ansible-playbook -i inventories/aliyun/alicloud.py playbook/tag_nsq-nsqd.yaml ansible-playbook -i inventories/aliyun/alicloud.py playbook/tag_nsq-nsqlookupd.yaml ansible-playbook -i inventories/aliyun/alicloud.py playbook/tag_golang.yaml ##### GCP ##### ansible-playbook -i inventories/gcp/gce.py playbook/tag_docker.yaml ansible-playbook -i inventories/gcp/gce.py playbook/tag_nsq-nsqadmin.yaml ansible-playbook -i inventories/gcp/gce.py playbook/tag_nsq-nsqd.yaml ansible-playbook -i inventories/gcp/gce.py playbook/tag_nsq-nsqlookupd.yaml ansible-playbook -i inventories/gcp/gce.py playbook/tag_golang.yaml 

How To Run DocKube

  • Setup Environment
cp .env.example .env 
  • Customize your own environment .env
  • Copy your public-key (id_rsa.pub) to each ssh-key in dockube folder.
  • Setup your own environment DocKube deployment in dockube-build.sh file.
ENV="0" # container environment (0 = development, 1 = staging, 2 = production) SKIP_BUILD="0" # (0 = with build process, 1 = bypass build process) REMOVE_CACHE="0" # (0 = using cache, 1 = no-cache) RECREATE_CONTAINER="0" # (0 = disable recreate container, 1 = force recreate container) DAEMON_MODE="1" # (0 = disable daemon mode, 1 = running daemon mode / background) USERNAME=`echo $USER` PATH_HOME=`echo $HOME` CONTAINER_PRODUCTION="portainer dockube-master dockube-node dockube-nfs" CONTAINER_STAGING="portainer dockube-master dockube-node dockube-nfs" CONTAINER_DEVELOPMENT="portainer dockube-master dockube-node dockube-nfs" 
  • Running DocKube Services:
make [services]: - dockube-run: Running Container DocKube - compose-build: Build spesific container services - compose-up: Start all container - dockube-stop: Stop all container DocKube - dockube-down: Delete all container DocKube 

How To Run Kubespray

  • Copy your public-key (id_rsa.pub) to each ssh-key in dockube folder.
  • Clone Repository Kubespray from our repo dockube/kubespray.
Go to `workspace` folder clone `kubespray` from `https://github.com/dockube/kubespray` ----- $ cd workspace $ git clone https://github.com/dockube/kubespray 
  • Configure kubespray/ansible.cfg:
### Baremetal / AWS / GCP ### #remote_user=ubuntu ### OpenStack / DigitalOcean (DO) / DocKube ### remote_user=root 
  • Setup your own environment kubespray deployment in workspace/kubespray/kubespray.sh file.
ENV_KEY="0" # Setup environment key private (0 = Not Used, 1 = DocKube, 2 = Staging, 3 = Production) VERBOSE_MODE="0" # (0 = disable verbose mode, 1 = running verbose mode) VERBOSE_COMMAND="-vvv" INVENTORY_DOCKUBE="inventory/dockube/hosts.ini" INVENTORY_STAGING="inventory/k8s-staging/hosts.ini" INVENTORY_PRODUCTION="inventory/k8s-production/hosts.ini" DOCKUBE_PATH_KEY="/opt/keyserver/key-dockube.pem" STAGING_PATH_KEY="/opt/keyserver/key-staging.pem" PRODUCTION_PATH_KEY="/opt/keyserver/key-prod.pem" 
  • Running Kubespray Services:
make [services]: - dockube-cluster: Build K8S cluster in DocKube environment - dockube-remove: Remove K8S cluster in DocKube environment - dockube-reset: Reset all configuration K8S cluster in DocKube environment - dockube-scale: Scale new K8S cluster in DocKube environment - dockube-upgrade: Upgrade K8S cluster in DocKube environment - staging-cluster: Build K8S cluster in Staging environment - staging-remove: Remove K8S cluster in Staging environment - staging-reset: Reset all configuration K8S cluster in Staging environment - staging-scale: Scale new K8S cluster in Staging environment - staging-upgrade: Upgrade K8S cluster in Staging environment - production-cluster: Build K8S cluster in Production environment - production-remove: Remove K8S cluster in Production environment - production-reset: Reset all configuration K8S cluster in Production environment - production-scale: Scale new K8S cluster in Production environment - production-upgrade: Upgrade K8S cluster in Production environment 

SSH Docker Container

  • Copy your public-key (id_rsa.pub) to each ssh-key folder.
  • Check Container Running
docker ps 
  • Inspect IP Address
docker inspect [container_id] ----- docker inspect 1486 | grep IP # container_id: dockube-master "IPAddress": "172.212.0.6" 
  • Use root account
ssh root@172.212.0.12 
  • Check Container
root@1486b2a592b3:~# go version go version go1.11.1 linux/amd64 root@1486b2a592b3:~# ansible --version ansible 2.0.0.2 config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides