Post twitter using python script

$ pip install --upgrade pip
$ pip install tweepy
import tweepy

def get_api(cfg):
    auth = tweepy.OAuthHandler(cfg['consumer_key'], cfg['consumer_secret'])
    auth.set_access_token(cfg['access_token'], cfg['access_token_secret'])
    return tweepy.API(auth)

def main():
    cfg = {
        "consumer_key"        : "xxxxx",
        "consumer_secret"     : "xxxxx",
        "access_token"        : "xxxxx",
        "access_token_secret" : "xxxxx"
    }

    api = get_api(cfg)
    tweet = "my status here"
    status = api.update_status(status=tweet)

if __name__ == "__main__":
    main()

Build ELK stack on ubuntu 16.04

Logstash
Elasticsearch
Kibana
Filebeat

ELK server:

$ sudo add-apt-repository -y ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get -y install oracle-java8-installer

Install Elasticsearch

$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
$ echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
$ sudo apt-get update
$ sudo apt-get -y install elasticsearch

Config Elasticsearch

$ sudo vim /etc/elasticsearch/elasticsearch.yml

Uncomment this line, and change to network.host: 0.0.0.0

network.host: 0.0.0.0
$ sudo systemctl restart elasticsearch
$ sudo systemctl enable elasticsearch

Install Logstash

$ echo "deb http://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get install logstash

Configure Logstash

$

 

Fix cannot access internet in your docker container

I use docker for testing environment. Somehow I found out that the docker container cannot access the internet and the solution is really simple:

$ sudo ifconfig docker0 down
$ sudo service docker restart
$ sudo ifconfig docker0 up

Or

$ sudo vim /etc/default/docker
DOCKER_OPTS="--dns 10.10.4.14 --dns 8.8.8.8 --dns 8.8.4.4"

Which:
10.10.4.14 in my localhost/laptop

Bash script to run terraform recursively

#!/bin/bash

cd prd && ls -d */
declare -a dirs
i=1
for d in */
do
    dirs[i++]="${d%/}"
done
echo "There are ${#dirs[@]} dirs in the current path"
for((i=1;i<=${#dirs[@]};i++)) do cd "${dirs[i]}" && rm -rf .terraform \ && echo "terraform {" > backend.tf \
    && echo "backend \"consul\" {" >> backend.tf \
    && echo "}" >> backend.tf \
    && echo "}" >> backend.tf \
    && terraform get -update=true \
    && terraform init -backend=true \
    -backend-config "address=consul-ip" \
    -backend-config "path=prd/${dirs[i]}" \
    && terraform apply -auto-approve \
    && rm backend.tf \
    && cd ..
done