Category Archives: Configuration/Orchestration

Jenkins: Docker Compose deployment from Ansible with ECR authentication

26 September 2019
 

 In addition to the AWS: create an Elastic Container Registry and Jenkins deploy job post – the next part, where we will create a new Jenkins job to deploy a Docker Compose file to run our Docker image. Docker Compose file will be updated by an Ansible role called docker-deploy, which will set the desired… Read More »

NGINX: multi-branch deployment with Ansible, NGINX map and HTTP Headers

26 June 2019
 

 We have a standard LEMP setup NGINX, PHP-FPM. Application – Yii-framework, deployed from Jenkins using Ansible role with the synchronize module on backend hosts in a /data/projects/prjectname/frontend/web,  directory which is set as a root for an NGINX virtual host. The task is to have the ability to deploy the same application on the same backend… Read More »

Redis: replication, part 4 – writing an Ansible role fore the Master-Slave replication with Redis Sentinel provisioning

15 April 2019
 

 The next post from the Redis replication series. Previous parts: Redis: replication, part 1 – an overview. Replication vs Sharding. Sentinel vs Cluster. Redis topology. Redis: replication, part 2 – Master-Slave replication, and Redis Sentinel Redis: replication, part 3 – redis-py and work with Redis Sentinel from Python The task now is to write an… Read More »

Redis: Sentinel – bind 0.0.0.0, the localhost issue and the announce-ip option

10 April 2019
 

 Originally, in a Sentinel’s configs, I have used the bind 0.0.0.0 to make them accessible from external hosts. Because of this when I started rolling out this setup on a real environment faced with an issue when Sentinels could not determine a Master host and other Sentinel hosts. In this post – such an issue… Read More »

Ansible: get a target host’s IP

9 April 2019
 

 The task is to get a host’s IP during executing an Ansible task. Below – two examples of how this can be done. Example 1 – hostvars See the documentation here>>>. Code: – name: Test hosts list debug: msg: “{{ hostvars[inventory_hostname][‘ansible_default_ipv4’][‘address’] }}” Run it: Example 2 – lookup and dig Another approach could be using… Read More »

Terraform: creating a project with an AWS EC2, VPC, and AWS cross-region VPC peering connection

18 March 2019
 

 One of the disappointing surprises in my AWS CloudFormation experience was the fact that it wasn’t able to automatically create cross-region VPC-peering connections. Note: this post originally was written in Rus on 28 June 2018 but now CloudFormation can do it, check the PeerRegion parameter of the AWS::EC2::VPCPeeringConnection resource. As a result – it tries… Read More »

Terraform: main commands, state-files, backend storages, and modules in examples on AWS

17 March 2019
 

 Examples of how to use Terraform, work with its backends and modules. Here will set up a simple EC2 instance in AWS and will store Terraform’s state-files in an AWS S3 bucket. In short terms – but with real examples and links to documentation. Installation on Arch Linux: For authorization will use an existing AWS… Read More »

Ansible: check if a package is installed on a remote system

10 March 2019
 

 Have a self-written letsencrypt role (see the Prometheus: RTFM blog monitoring set up with Ansible – Grafana, Loki, and promtail post). Before running the Let’s Encrypt client to obtain a new certificate – need to check if NGINX is installed on a remote host. Let’s use the package_facts module: … – name: “Check if NGINX is… Read More »

Prometheus: RTFM blog monitoring set up with Ansible – Grafana, Loki, and promtail

10 March 2019
 

 After implementing the Loki system on my job’s project – I decided to add it for myself, so see my RTFM blog server’s logs. Also – want to add the node_exporter and alertmanager, to be notified about high disk usage. In this post, I’ll describe the Prometheus, node_exporter, Grafana, Loki, and promtail set up process… Read More »

AWS: RDS logs, export to the CloudWatch Logs and CloudFormation template

7 March 2019
 

 We have a bunch of the AWS RDS with MariaDB. Backend-developers asked me to enable slow requests logs so they can debug their application. So the task is: enable AWS RDS logging and configure export to the CloudWatch Logs for further analysis. As everything else – our RDS instances are configured via CloudFormation templates, so… Read More »