ansible

A collection of 9 posts
state=running is deprecated with Ansible
ansible

state=running is deprecated with Ansible

個人サーバの構成管理にAnsibleを使っています。 * ansible - ゆるふわキャンパー Ansibleをアップデートしたところ以下のWarningが出るようになりました。 [DEPRECATION WARNING]: state=running is deprecated. Please use state=started. This feature will be removed in version 2.7. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. どうやらstate=runningという書き方は非推奨になり、Ansibleの2.7で廃止されるようです。 PRはこれっぽい。廃止される理由はよくわからなかった...。 * service: deprecate state=running by resmo · Pull
1 min read
always_run is deprecated
ansible

always_run is deprecated

先日ansible-playbookを実行したら以下のようなWARNINGが出ました。 [DEPRECATION WARNING]: always_run is deprecated. Use check_mode = no instead.. This feature will be removed in version 2.4. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. どうやらalways_runは非推奨になり、ansibleバージョン2.4で廃止されるようです。 代わりにcheck_modeを使えば良いみたいです。 * Check Mode (“Dry Run”) — Ansible Documentation always_run: yesとcheck_mode:
1 min read
去年より個人ブログのポスト数を2倍くらい増やせたのでなぜなのか書く
ghost

去年より個人ブログのポスト数を2倍くらい増やせたのでなぜなのか書く

この記事はfeedforceアドベントカレンダーの11日目の記事なんだからね! * feedforce Advent Calendar 2016 - Adventar 昨日は@tmd45さんのターンでした。私も脂肪が増えてきた気がするので減らしていこうと思います(戒め)。まずは野菜だ!(ちなみに最初フト「れ」ない話に空目して関連する人物が3人ほど脳内サジェストされました。) * フトらない話 - TMD45'β'LOG!!! さて、今回は「分散惑星間データセンター(Grid Interplanetary Data Center)時代のデータ通信技術」について書こうとしたのですが、すごい難しそうなので諦めました。 公転の関係で季節によって通信先の惑星とのレイテンシが変わったり、公転の関係で通信先の惑星が太陽の向こう側に隠れると通信できなくなったり、太陽風とか重力レンズ効果を考慮しないとだめとか多分そんな感じです。 ていうかそもそもまだ地球以外の惑星にデータセンターと呼べるものがないのでは?(怒) なので今回は、去年よりブログのポスト数が増やせたことに関して
5 min read
Send h2o log to BigQuery
h2o

Send h2o log to BigQuery

h2oのアクセスログをtd-agentを使ってGoogle BigQueryに送ってみる。幾つか手順が必要。 * bigqueryの設定 * スキーマ定義ファイルの作成 * td-agentの設定 bigqueryの設定 bigqueryへアクセスするためにapiを有効化し、アクセスキーを発行するのだが、この工程が長い…。(´・_・`) 慣れてないと混乱する。 gcpアカウントの作成 作る。 * Google Cloud Computing, Hosting Services & APIs  |  Google Cloud Platform プロジェクトの作成 請求先アカウントの設定 bigqueryのapiを有効化 認証情報(とサービスアカウント)の作成 これでやっと以下のようなjson形式の鍵ファイルがダウンロードされる。td-agnetの設定で使う。 { "type": "......", "project_id": "......", "pr
4 min read
Differentiate environments with ansible
ansible

Differentiate environments with ansible

ansibleでdigitaloceanの構成管理をしている。このときvagrantを使って試しながら本番に適用しているのだが、本番にしか適用したくない設定(mackerel-agentのインストールとか)、開発環境にのみ適用したい設定が出てきた。 それっぽいワードで調べてみたら、group_varsやhost_varsとwhenステートメントを組み合わせる方法が手軽そうだった。 * Multistage environments with Ansible – Ross Tuck * Inventory — Ansible Documentation * Conditionals — Ansible Documentation リンクを参考に以下のような感じでインベントリを設定した。 development [ponpokopon-vm] 192.168.33.10 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private
1 min read
To create `/var/run/h2o/` directory using systemd-tmpfiles
ansible

To create `/var/run/h2o/` directory using systemd-tmpfiles

h2oをインストールするansibleのタスクを書いた。ついでにh2oの実行ユーザーをh2oユーザーにしてみた(デフォルトはnobody)。しかし、h2oの起動に失敗する。 ログ見ると/var/run/h2oディレクトリへ書き込みできなくて起動失敗している。 * h2oインストール時(?)に/var/run/h2oが作成される(nobody:nobodyで) * h2o起動直後h2oユーザーで/var/run/h2o以下にpidファイルを作成しようとするが、オーナーがnobodyなので作成失敗→起動失敗 という流れ。 予めディレクトリを作成するタスク書けば良いと思ったけど微妙感が…。h2oの起動スクリプトをいじるのも、h2oアップデート時元に戻されそうだしダメそう。 そこで何かいい方法がないか探した所、systemdにsystemd-tmpfilesというものがあった! これはその名の通り、systemdのテンポラリなファイルを管理できる。/etc/tmpfiles.d/h2o.confのように、/etc/tmpfiles.d以下に定義ファイルを置く。
2 min read
Using HashiCorp's Vault with Ansible
ansible

Using HashiCorp's Vault with Ansible

ansibleのプレイブック内にある機密情報(dbのパスワードとか)をVault by HashiCorpを使ってvaultの管理下に置いてみようと思う イメージ的には、今までプレイブックにこんな感じで平文で書かれていたものを、 password="1234abcd" こんな感じでプレイブック内に書かないようにしたい password="{{vaultからいい感じに取ってくる何か}}" 確かにこれでプレイブックには含まれなくなるけど、外部のデータストアに機密情報置くことになるけどそこは安全なのか問題がここで発生する でもvaultはそんな悩みを解決するためのツールだからいい感じに かつ安全に機密情報を管理してアプリケーションからいい感じに機密を使えるであろうことを激しく期待!禿北!! 準備 Ansible Lookup Plugin Lookup Pluginを使ってみる Lookup Pluginとは外部ソース(ローカルのファイルや外部のデータストア等)からansible内のデータへのアクセスを可能にしてくれるプラグイン機能 vau
1 min read
Idempotence shell in Ansible
ansible

Idempotence shell in Ansible

nodejsをインストールするプレイブックを書いたんだけど、epelから入れると古いnodejsがインストールされてしまう問題があった。 そこで最新のnodejsをcentos7に入れるプレイブックに書きなおした。nodejs公式に案内されてるやり方で、まずcurl叩いてnodejs5系が入るリポジトリをインストールした。 こんな感じ。 - name: setup_5.x is downloaded get_url: url=https://rpm.nodesource.com/setup_5.x dest=/tmp/setup_5.x tags: nodejs - name: nodesource repo is installed become: yes shell: bash /tmp/setup_5.x tags: nodejs ところが、shellモジュールは冪等性が担保されていないモジュールなので、ansible-playbook -i
1 min read