Container Linux(CoreOS)で
- 定期バックアップ
- バックアップ先にS3(互換を含む)オブジェクトストレージを利用した
もくじ
Container Linux(CoreOS) で 「aws-cli」を使う
Container Linux(CoreOS) の軽量さを活かしたまま、『aws-cli』を使いたい!!そうなると、実現方法は一つで
- Dockerでaws-cli動く環境を用意する
設定とか、認証とかどーすんだ!?って悩むんですが。
ものはやってみろ!ってことでやってみました~
Docker imageを使わせてもらう
今回は、こちらのDocker image を使わせてもらいました!Dockerfile見た感じ、だいぶシンプルだったので。
null
null
githubだと、ここ。
sekka1/aws-cli-docker
aws-cli-docker - Docker container with the AWS CLI
docker-compose.ymlも用意されていて、便利便利w
お試しのコマンド「.env」ファイルを準備して、以下をたたくだけ。
echo AWS_ACCESS_KEY_ID=ID >> .env echo AWS_SECRET_ACCESS_KEY=KEY >> .env docker-compose run aws s3 ls今回は、IDCFさんでやったので、ちょっとだけコマンド引数が増えて
echo AWS_ACCESS_KEY_ID=(IDCFの)API Key >> .env echo AWS_SECRET_ACCESS_KEY=(IDCFの)Secret Key >> .env docker-compose run aws --endpoint-url https://ds.jp-east.idcfcloud.com s3 ls東日本だと、こんな感じー
IDCFのオブジェクトストレージ使うのに参考にした記事:
データは、volumesで見られるように改変
docker-dompose.ymlを以下のように改変--- docker-compose.yml 2017-08-02 17:12:30.987741061 +0900 +++ docker-compose.yml.mine 2017-08-02 18:19:16.540945574 +0900 @@ -7,3 +7,7 @@ - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_DEFAULT_REGION + volumes: + - /srv/bitnami/nginx_data:/opt/nginx + - /srv/docker/redmine/redmine:/opt/redmine/data + - /home/core:/opt/corevolumes を追加して、『aws-cli』のDockerから、みられるように改変
Container Linux(CoreOS) で 「定期ジョブ(cron job)」 を使う
SPOFを防ぐためには、本来外部からJobをコントロールすべきなのですが。今回は個人的な利用用途ということで
Container Linux(CoreOS) で 『定期ジョブ』 を実行させる方法です。
これ、結構苦労したんです・・・
合っているかどうか、正直わからないのですが。今回はこうしました的な内容となっております・・・。
- cloud-configで設定を書いて適用
coreos: units: - name: docker-redmine-backup.service enable: false # サービスとしては「無効化」でtimerで実行してもらう content: | [Unit] Description=Redmine data backup [Service] Type=oneshot ExecStart=/usr/bin/sh -c '/usr/bin/sh /home/core/aws-cli-docker/docker-redmine-backup.sh' # ダサいw [Install] WantedBy=multi-user.target - name: docker-redmine-backup.timer enable: true content: | [Unit] Description=Run docker-redmine-backup.service every-day AM 7:00 [Timer] OnCalendar=*-*-* 07:00:00 # 毎日AM7時に実行 Unit=docker-redmine-backup.service # docker-redmine-backup.timerという風に本来同じ名前なら省略可能 [Install] WantedBy=timers.target適用
sudo coreos-cloudinit --from-file ./cloud-config.yml参考:
CoreOS
CoreOS provides Container Linux, Tectonic for Kubernetes and the Quay image registry; key components to secure, simplify and automatically update your container infrastructure.
バックアップに使ったシェルスクリプト
こちらもダサダサですが、さらしておきますw#!/bin/sh cd /home/core/aws-cli-docker /opt/bin/docker-compose -f docker-compose.yml.mine run aws --endpoint-url https://ds.jp-east.idcfcloud.com s3 sync /opt s3://redmine-backups/docker --exclude '*/tmp' exit 0 # どうしても「0」以外が返ってくるのを回避できなかったので、すみませんwあー、ダサダサwww
まとめ
Container Linux(CoreOS) で- aws-cli使う方法
- 定期ジョブの実行方法
本当にSPOFなので、あんまりおススメはできないのですが、趣味の範疇でということでw