{"id":16320,"date":"2021-08-29T13:38:50","date_gmt":"2021-08-29T11:38:50","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/"},"modified":"2021-08-29T13:38:50","modified_gmt":"2021-08-29T11:38:50","slug":"deploy-a-kubernetes-cluster-using-ansible-in-aws","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/","title":{"rendered":"Deploy a Kubernetes cluster using Ansible in AWS"},"content":{"rendered":"<p>After more than 2 years of experience in Kubernetes cluster administration, I am deeply convinced that one of the most important things to have as an ops guy is a sandbox cluster at your disposal. This can be either a sleeping cluster or a new fresh installation with all your standards replicated on it to perform your series of tests.<\/p>\n<p>In this blog post, we consider that you have an AWS account with limited credits, it&#8217;s the reason why we are using Ansible to provision automatically the instances and install the cluster with the possibility to scratch it when no longer need it.<\/p>\n<h3>Prerequisistes<\/h3>\n<p>Before starting you should meet the following prerequisites:<\/p>\n<ul>\n<li>Active AWS account with permissions to create resources<\/li>\n<li>ansible installed on your local environment<\/li>\n<li>boto3 (python) library installed in your system<\/li>\n<\/ul>\n<h4>EC2 Instances Provisionning<\/h4>\n<p>The first step is to create an Ansible playbook for launching 3 EC2 instances in AWS. Before make sure you have your AWS key-pair in your local workspace, if not please create your key-pair (https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ec2-key-pairs.html).<\/p>\n<p>Export your AWS credentials as follows:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">export AWS_ACCESS_KEY_ID=\"xxxxxxxxx\"\nexport AWS_SECRET_ACCESS_KEY=\"xxxxxxxxx\"<\/pre>\n<p>Create an ansible hosts file with the follow parameters: <\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[local]\nlocalhost ansible_connection=local\n\n[all:vars]\nansible_python_interpreter=\/usr\/local\/bin\/python3<\/pre>\n<p>Now create your ec2-provision.yaml playbook with the following content:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">ansible-galaxy init ec2-provision\n\nvi ec2-provision\/tasks\/main.yml<\/pre>\n<pre class=\"brush: yaml; gutter: true; first-line: 1\">---\n  - name: launch Master Node AWS cloud\n    ec2:\n          key_name: \"aws-k8s\"\n          instance_type: \"t2.micro\"\n          image: ami-0ea894d798b111f33\n          wait: yes\n          count: 1\n          vpc_subnet_id: \"subnet-xxxxxx\"\n          group_id: sg-xxxxxx\n          assign_public_ip: yes\n          region: \"eu-central-1\"\n          state: present\n          aws_access_key: \"{{ lookup('env', 'AWS_ACCESS_KEY') }}\"\n          aws_secret_key: \"{{ lookup('env', 'AWS_SECRET_KEY') }}\"\n          instance_tags: {\"Name\": \"Master\", \"Cluster\": \"k8s Cluster\"}\n  - name: launch Worker Node on AWS cloud\n    ec2:\n          key_name: \"aws-k8s\"\n          instance_type: \"t2.micro\"\n          image: ami-0ea894d798b111f33\n          wait: yes\n          count: 2\n          vpc_subnet_id: \"subnet-xxxxxx\"\n          group_id: sg-xxxxxx\n          assign_public_ip: yes\n          region: \"eu-central-1\"\n          state: present\n          aws_access_key: \"{{ lookup('env', 'AWS_ACCESS_KEY') }}\"\n          aws_secret_key: \"{{ lookup('env', 'AWS_SECRET_KEY') }}\"\n          instance_tags: {\"Name\": \"Worker\", \"Cluster\": \"k8s Cluster\"}<\/pre>\n<p>Create the ec2-provision playbook. It will execute the ec2-provision role:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">vi ec2-provision.yml<\/pre>\n<pre class=\"brush: yaml; gutter: true; first-line: 1\">- hosts: all\n  remote_user: root\n  roles:\n      - ec2-provision<\/pre>\n<p>Execute the playbook: <\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\u279c ansible-playbook -i hosts ec2-provision.yml<\/pre>\n<p>This Playbook will launch 3 EC2 Instances for Kubernetes Cluster one Master Node and two Worker Nodes.<\/p>\n<p>Verify your instances has been properly created in AWS Management Console:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws-ansible-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws-ansible-1.png\" alt=\"\" width=\"3198\" height=\"410\" class=\"aligncenter size-full wp-image-50735\" \/><\/a><\/p>\n<h4>Ansible Dynamic Inventory<\/h4>\n<p>Create a dynamic inventory directory under your ansible deployment, cd into the directory and create an inventory file aws_ec2.yml.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\u279c  mkdir -p dynamic_inventory\n\u279c  cd dynamic_inventory\n\u279c  vi aws_ec2.yml<\/pre>\n<pre class=\"brush: yaml; gutter: true; first-line: 1\"> ---\nplugin: aws_ec2\naws_access_key: \"{{ lookup('env', 'AWS_ACCESS_KEY') }}\" \naws_secret_key: \"{{ lookup('env', 'AWS_SECRET_KEY') }}\"\nregions:\n  - eu-central-1\nkeyed_groups:\n  - key: tags\n    prefix: tag\n  - prefix: instance_type\n    key: instance_type\n  - key: placement.region\n    prefix: aws_region\nhostnames: \n  - private-ip-address\n# Doc. https:\/\/docs.aws.amazon.com\/cli\/latest\/reference\/ec2\/describe-instances.html#options<\/pre>\n<p>Export your AWS_ACCESS_KEY and AWS_SECRET_KEY in your current shell environnement. <\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\u279c  export AWS_ACCESS_KEY_ID=\"XXXXXXXXX\"\n\u279c  export AWS_SECRET_ACCESS_KEY=\"XXXXXXXXX\"\n\u279c  export AWS_SESSION_TOKEN=\"XXXXXXXXX\"<\/pre>\n<p>Inside your ansible.cfg configuration file, enable the aws_ec2 plugin under the inventory section. <\/p>\n<pre class=\"brush: yaml; gutter: true; first-line: 1\">[inventory]\nenable_plugins = aws_ec2<\/pre>\n<p>Now let\u2019s test the dynamic inventory configuration by listing the ec2 instances.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">ansible-inventory -i dynamic_inventory\/aws_ec2.yaml --list<\/pre>\n<p>The above command returns the list of ec2 instances with all its parameters in JSON format.<\/p>\n<p>One of the most interesting use cases of the Ansible dynamic inventory is to execute Ansible playbooks against a single or group of categorized or grouped instances based on tags, regions, or other ec2 parameters. Based on that you can easily dynamically find the instance you created and execute playbooks on it. <\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\u279c  ansible-inventory -i dynamic_hosts\/aws_ec2.yml --graph | grep -e Master -e Worker -A 2\n  |--@tag_Name_Master:\n  |  |--172.21.9.11\n  |--@tag_Name_Worker:\n  |  |--172.21.9.37\n  |  |--172.21.9.53<\/pre>\n<p>For testing purposes, we execute a ping command with the Master instance of our cluster. As per my configuration, the dynamic group name is tag_Name_Master.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\u279c  ansible -i dynamic_hosts\/aws_ec2.yml tag_Name_Master -m ping\n\n172.21.9.11 | SUCCESS =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"changed\": false,\n    \"ping\": \"pong\"\n}<\/pre>\n<h4>Kubernetes cluster deployment<\/h4>\n<p>Once your instances have been properly created in AWS and the Ansible dynamic inventory is configured, we gonna now install our Kubernetes cluster on top.<br \/>\nFirst, create the master and workers roles, as follows: <\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\u279c ansible-galaxy init master\n\u279c ansible-galaxy init workers<\/pre>\n<p>The master role will perform the following tasks: <\/p>\n<ul>\n<li>Docker installation and configuration<\/li>\n<li>Kubeadm installation and init<\/li>\n<li>Flannel CNI installation<\/li>\n<li>Generate the Kubeadm join command for workers<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2021-08-29-at-00.07.41.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2021-08-29-at-00.07.41.png\" alt=\"\" width=\"1024\" height=\"552\" class=\"aligncenter size-large wp-image-51343\" \/><\/a><\/p>\n<p>Workers role will perform the following tasks:<\/p>\n<ul>\n<li>Docker installation and configuration<\/li>\n<li>Kubeadm installation and configuration<\/li>\n<li>Kubeadm join cluster<\/li>\n<\/ul>\n<p>Main cluster.yml playbook: <\/p>\n<pre class=\"brush: yaml; gutter: true; first-line: 1\">---\n- hosts: tag_Name_Master\n  become: yes\n  remote_user: root\n  roles:\n      - master\n\n- hosts: tag_Name_Worker\n  become: yes\n  remote_user: root\n  roles:\n      - workers<\/pre>\n<p>Execute the cluster.yml playbook<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\u279c ansible-playbook -i dynamic_hosts\/aws_ec2.yml cluster.yml<\/pre>\n<p>You can find all the reference in the following GitHub repository: <a href=\"https:\/\/github.com\/MehB\/ansible-aws-k8s\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/MehB\/ansible-aws-k8s<\/a><\/p>\n<p>Once completed, connect to the master node instance as root user and execute the following command: <\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[root@ip-172-21-9-14 ~]# kubectl get nodes -o wide\nNAME                                           STATUS   ROLES                  AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION                  CONTAINER-RUNTIME\nip-172-21-9-14.eu-central-1.compute.internal   Ready    control-plane,master   15m   v1.22.1   172.21.9.14           Amazon Linux 2   4.14.243-185.433.amzn2.x86_64   docker:\/\/20.10.7\nip-172-21-9-74.eu-central-1.compute.internal   Ready                     33s   v1.22.1   172.21.9.74           Amazon Linux 2   4.14.243-185.433.amzn2.x86_64   docker:\/\/20.10.7\nip-172-21-9-96.eu-central-1.compute.internal   Ready                     68s   v1.22.1   172.21.9.96           Amazon Linux 2   4.14.243-185.433.amzn2.x86_64   docker:\/\/20.10.7<\/pre>\n<p>Your sandbox Kubernetes cluster on AWS is ready to use \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After more than 2 years of experience in Kubernetes cluster administration, I am deeply convinced that one of the most important things to have as an ops guy is a sandbox cluster at your disposal. This can be either a sleeping cluster or a new fresh installation with all your standards replicated on it to [&hellip;]<\/p>\n","protected":false},"author":109,"featured_media":16321,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1321,1865,1320,1504,1522],"tags":[150,133,89],"type_dbi":[],"class_list":["post-16320","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ansible","category-aws","category-devops","category-docker","category-kubernetes","tag-ansible","tag-aws","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Deploy a Kubernetes cluster using Ansible in AWS - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploy a Kubernetes cluster using Ansible in AWS\" \/>\n<meta property=\"og:description\" content=\"After more than 2 years of experience in Kubernetes cluster administration, I am deeply convinced that one of the most important things to have as an ops guy is a sandbox cluster at your disposal. This can be either a sleeping cluster or a new fresh installation with all your standards replicated on it to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-29T11:38:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws-ansible-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\n\t<meta property=\"og:image:height\" content=\"263\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"DevOps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DevOps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/\"},\"author\":{\"name\":\"DevOps\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"headline\":\"Deploy a Kubernetes cluster using Ansible in AWS\",\"datePublished\":\"2021-08-29T11:38:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/\"},\"wordCount\":551,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/aws-ansible-1.png\",\"keywords\":[\"Ansible\",\"AWS\",\"kubernetes\"],\"articleSection\":[\"Ansible\",\"AWS\",\"DevOps\",\"Docker\",\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/\",\"name\":\"Deploy a Kubernetes cluster using Ansible in AWS - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/aws-ansible-1.png\",\"datePublished\":\"2021-08-29T11:38:50+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/aws-ansible-1.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/aws-ansible-1.png\",\"width\":2048,\"height\":263},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/deploy-a-kubernetes-cluster-using-ansible-in-aws\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploy a Kubernetes cluster using Ansible in AWS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4cd1b5f8a3de93f05a16ab8d7d2b7735\",\"name\":\"DevOps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"caption\":\"DevOps\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/devops\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Deploy a Kubernetes cluster using Ansible in AWS - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/","og_locale":"en_US","og_type":"article","og_title":"Deploy a Kubernetes cluster using Ansible in AWS","og_description":"After more than 2 years of experience in Kubernetes cluster administration, I am deeply convinced that one of the most important things to have as an ops guy is a sandbox cluster at your disposal. This can be either a sleeping cluster or a new fresh installation with all your standards replicated on it to [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/","og_site_name":"dbi Blog","article_published_time":"2021-08-29T11:38:50+00:00","og_image":[{"width":2048,"height":263,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws-ansible-1.png","type":"image\/png"}],"author":"DevOps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"DevOps","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/"},"author":{"name":"DevOps","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"headline":"Deploy a Kubernetes cluster using Ansible in AWS","datePublished":"2021-08-29T11:38:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/"},"wordCount":551,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws-ansible-1.png","keywords":["Ansible","AWS","kubernetes"],"articleSection":["Ansible","AWS","DevOps","Docker","Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/","url":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/","name":"Deploy a Kubernetes cluster using Ansible in AWS - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws-ansible-1.png","datePublished":"2021-08-29T11:38:50+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws-ansible-1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/aws-ansible-1.png","width":2048,"height":263},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/deploy-a-kubernetes-cluster-using-ansible-in-aws\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Deploy a Kubernetes cluster using Ansible in AWS"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735","name":"DevOps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","caption":"DevOps"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/devops\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/109"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=16320"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16320\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/16321"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=16320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=16320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=16320"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=16320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}