かべぎわブログ

ブログです

Ansible

Ansible skipの場合 registerに格納しないようにする

まず事象として タスクがskipされたときでもregisterにはその旨が格納されてしまう。 - hosts: localhost tasks: - debug: msg: "TRUE" register: true_register when: true - debug: var: true_register - debug: msg: "FALSE" register: false_register wh…

VagrantでAnsibleプロビジョニングする

以下のようなVagrantfileを利用する。 config.vm.provisionでansibleをえらんであげればOK この場合はVagrantfileと同一ディレクトリにあるplaybook.ymlを実行してくれる。 Vagrant.configure("2") do |config| config.vm.network "private_network", type: …

DockerでAnsibleをうごかす

ローカルで適当にうごかすかーみたいなときによくやる構成。 ディレクトリ構成 . ├── Dockerfile └── playbooks └── playbook.yml Dockerfile FROM python:3.8 RUN pip install pip --upgrade RUN pip install ansible WORKDIR /work ビルドして docker buil…

ansible-vaultで秘密鍵を暗号化する

秘密鍵も含めてGitHubにプッシュしたかった。 プライベートリポジトリとはいえそのままプッシュするのはためらわれたのでansible-vaultで暗号化してみる。 ​ 秘密鍵の暗号化 ​ ansible-vaultで秘密鍵を暗号化 パスワードは適当に入力 ansible-vault .ssh/pri…

AnsibleでIAMポリシーを作成する

概要 Ansibleを利用してIAMポリシーを作成してみたいと思います。 playbook playbookとそれでつかうJSONはこんなかんじ。 JSONに記載したポリシーのとおりにIAMポリシーが作成されます。 実行結果確認 ポリシーができている。 $ aws iam list-policies --que…

AnsibleでLinuxサーバのOSを再起動する

概要 AnsibleでLinuxサーバのOSを再起動してみたいと思います。 playbook たったこれだけ。 おわりに むかしはWindowsの再起動のモジュールしかなかったんだけどAnsible2.7からLinux用のモジュールが追加されていた。 Ansible実践ガイド第2版 impress top ge…

Ansibleのshellではif文とかもつかえる

概要 しらなかったのでメモ。 つかいどころがあるのかどうかはわからぬ。 playbook たとえばこんなかんじのplaybookがあったとする。 実行してみる こんなかんじでifが実行されていることがわかる。 $ ansible-playbook ./wawawa.yml --extra-vars="hensuu=w…

Ansibleで実行失敗したときにretryファイルがでないようにする

Ansibleでエラーになったときにでる.retryファイルがなんかうざいなーとおもってきたので出ないように設定してみます。 ansible.cfgに以下を設定してあげます。 retry_files_enabled = False こうすればでなくなります!!!!!!! Ansible実践ガイド 第2…

Ansibleでgoofysをインストールする

概要 AnsibleでgoofysをインストールするPlaybookを書いた。 playbook こんなかんじ。 おわりに epel-releaseとfuse,golangを分けたのはなんかそうしないとうまくいかなかったんだよね。 Ansible実践ガイド 第2版 (impress top gear)作者: 北山晋吾,塚本正隆…

AnsibleでCentOSにRuby2.6.0ともろもろ一式をインストールする

概要 Ansibleでほとんどなにもしていない生のCentOSにRuby2.6.0とrbenvとかもろもろ一式をインストールするplaybookを書いてみました。 playbook shellのところだけ~/でホームディレクトリが呼び出されないのでがっつりかいているよ。 Ansible実践ガイド 第2…

ansible_ssh_common_argsをつかって踏み台経由でAnsibleを実行する

概要 ansible_ssh_common_argsを利用して踏み台を経由して、外部においてあるAnsibleからだと直接接続できないサーバの構成管理をしてみたいと思います。 構成 構成としてはこんなかんじ。 仕事でつかうようなかんじだとよくあると思う。 外部のAnsibleから…

Ansibleのモジュールを自作してみる

概要 Ansibleのモジュールを自分でつくってみて動かしてみたいと思います。 環境 Ansibleを動かす環境はこんなかんじ。 いたって普通の環境。 library/jisaku.pyが今回のキモの自作モジュール。 $ tree . ├── inventories │ └── hosts ├── jisaku.yml └── li…

Ansibleでstep実行をしてみる

概要 Ansibleでステップ実行してplaybookのタスクを確認しながら実行してみたいと思います。 やってみる たとえばこんなかんじのplaybookがあるとします。 - hosts: localhost gather_facts: false tasks: - name: "saisyo" debug: msg: "wawawa" - name: "t…

AnsibleでSystemdに新規サービスを追加する

概要 AnsibleをつかってSystemdに新規サービスを追加して、それを有効化して起動してみたいと思います。 playbook例 ちょっとした解説 以下のようなことをやっている。 wawawa.serviceというunitファイルをターゲットにコピーする。 daemon reloadする wawaw…

AnsibleのshellモジュールでPATHがとおってないと怒られるときの対処法

概要 Ansibleのshellモジュールでターゲットノードでコマンドを実行しようとしたところ、「コマンドが見つかりません」というエラーが返ってきてしまいました。 のでそれの対処法です。 こんなかんじのplaybookがエラーになった。 - hosts: target tasks: - …

Ansibleのcopyモジュールでワイルドカードを利用して複数ファイルをコピーする

概要 Ansibleのcopyモジュールでワイルドカードを利用して複数のファイルを一気にコピーする方法のご紹介です。 playbook例 with_fileglobでファイルを指定してあげることでワイルドカードを利用して複数ファイルを一気にコピーすることができます。 実行し…

Ansibleのimport_playbook で別のplaybookをそのまま読み込む

概要 Ansibleのimport_playbookを利用してほかのplaybookをまるまるそのまま読み込んで実行してみたいと思います。 playbook例 たとえば以下のようなplaybookがあったとします。 実行してみる yomikomi.ymlを実行してみます。 $ ansible-playbook yomikomi.y…

Ansible AWX を Amazon Linux2 にインストールする

Ansible AWX を Amazon Linux2 にインストールしてみたいと思います。 (Docker版でインストールしています) インストール手順 各種パッケージ類のインストール gitのインストール dockerのインストール Ansibleのインストール pip のインストール docker-py…

Ansibleのwin_fileでファイルやフォルダを作成/削除する

概要 Ansibleのwin_fileモジュールを利用して、Windows上にファイルやフォルダを作ったり、それを削除してみたいと思います。 ファイルを作成する 以下のようなかんじでファイルを作成することができます。 ファイルが存在しない場合は空ファイルが作成され…

Ansibleのshellとwin_shellに複数行のコマンドを記載する

概要 Ansibleのshellとwin_shellモジュールの中で複数行にわたるコマンドを記載してみたいと思います。 playbook例 実行してみる こんなかんじでechoが3行出力されていることがわかる。 $ ansible-playbook shell_fukusuu.yml -v PLAY [localhost] *********…

Ansibleのstart-atを利用してplaybookの途中から実行する

概要 Ansibleのplaybookを途中から実行する方法をご紹介します。 これを利用することでplaybookの途中でエラーでとまっちゃったんだけど初めからやり直すのめんどくさいなーというときに便利です!!! playbook例 playbookはなんでもいいです。 てきとーにd…

Ansibleでjinja2のifをつかって条件分岐させる

概要 Ansibleのplaybookの中でjinja2の記法をつかって条件分岐させてみたいと思います。 playbook例 prodがhonならhonban、kaiならkaihatsuと出力するように設定しています。 実行してみる honbanと出力されていることがわかります。 $ ansible-playbook jin…

Ansibleのwait_for_connectionをつかってOSの再起動を待つ

概要 Ansibleのwait_for_connectionを利用してターゲットノードのOSを再起動の完了を待ってみようと思います。 playbook例 shellでサーバの再起動を実施しています。asyncとpollを指定することでsshコネクションが切断されても処理をそのまま続けることがで…

AnsibleでターゲットのIPアドレスを取得する

概要 Ansibleを利用してターゲットノードのIPアドレスを取得してみたいと思います。 playbook例 実行してみる IPアドレスが出力されていることがわかります! $ ansible-playbook default_address.yml -v PLAY [target] ***********************************…

Ansibleのblockinfileモジュールをつかってテキストファイルに行を追加する

概要 Ansibleのblockinfileモジュールをつかってテキストファイルに任意の行を追加してみたいと思います。 playbook例 実行してみる $ ansible-playbook blockinfile.yml -v PLAY [localhost] ************************************************************…

Ansibleのreplaceモジュールをつかって文字列を置換してみる

概要 Ansibleのreplaceモジュールを利用して、テキストファイルなどの文字列を置換してみようと思います。 playbook例 ちょっとした説明 destで置換したいファイルを指定します。 regexpで置換したい文言を指定します(正規表現可) replaceで置換後の文言を指…

Ansibleでcronを設定してみる

概要 Ansibleのcronモジュールを利用してcrontabを設定してみようと思います。 playbook例 以下のように設定しています。 minuteやhourなどにcronで実行したい時間を設定します。 省略すると*扱いとなります。 jobは実行したいコマンドです。 実行してみる $…

Ansibleのhostnameモジュールでホスト名を変更する

概要 Ansibleのhostnameモジュールを利用してサーバのホスト名を変更してみます。 playbook例 こんなかんじで自分自身のホスト名をwawawa_serverに変更しています。 become: trueで実行しないと権限の関係で変更ができない可能性があるので要注意です。 実行…

Ansibleのexpectで対話型のスクリプトを実行してみる

概要 Ansibleのexpectを利用して対話型のスクリプトを実行してみようと思います。 準備 Ansibleでexpectモジュールを利用するためにはpexpectのインストールが必要です。 以下のコマンドでインストールしておきます。 $ sudo pip install pexpect playbook例…

Ansibleのバージョンを指定してインストールする

概要 Ansibleの特定のバージョンをインストールする方法をご紹介します! バージョンを指定してインストール たとえば、バージョン2.4.3をインストールする場合は以下のコマンドのようにバージョンを指定してpip installを実行します。 $ sudo pip install a…