カテゴリー
Linux

【Ansible】【Vagrant】CentOS 7 での PostgreSQL 9.6、phpPgAdmin 環境構築メモ

を作るにあたって、情報源や、勉強になったことなどをノートしていきます♪

カテゴリー
Linux

【Ansible】【Vagrant】デバッグしながらプレイブックを作るときに使っているテクニック

まとめ

  • debug モジュールを使って状況を出力
  • Vagrantfile で Ansible の実行状況を詳しく出力
  • Vagrant の snapshot 機能を利用
  • Vagrant の provision 機能を利用
カテゴリー
Linux

【Ansible】yum リポジトリや GPG キーのインストール方法の整理

ポイント

Ansible を使ったリポジトリのインストール方法とそれぞれの特徴。

  • プレイブックの files フォルダ等にリポジトリファイルを用意し、copy モジュールを使って配置する。
    • メリット: インストールが楽。
    • デメリット: アップデートには追従できない。
  • yum モジュールを使用してインストールする。
    • メリット: アップデートは楽
    • メリット: state: present に設定すれば、冪等性を保つことができる。
    • デメリット: yum で扱えるリポジトリが限られる。
    • デメリット: state: latest に設定する場合、インストールに yum モジュールを使用するが、インストール済みの場合にプレイブックを実行するとエラーとなる。
  • yum_repository モジュールを使用してインストールする。
    • リポジトリファイルの内容を把握し、設定を自分自身でプレイブックに書いていく必要がある。
    • デメリット: そのため記述量が多くなる。
    • メリット: 逆に、詳細なリポジトリ設定と制御と、詳細なプレイブックの管理が可能。

GPG キーのインストール方法とそれぞれの特徴。

  • プレイブックの files フォルダ等に GPG キーファイルを用意し、copy モジュールを使って配置する。
    • メリット: インストールが楽。
    • デメリット: アップデートには追従できない。
  • rpm_key モジュールを使用して GPG キーをインストールする。
  • yum_repository モジュールの gpgkey オプションにパスまたは URL を指定する。
    • デメリット: パスを指定する場合は、GPG キーファイルを別途用意する必要があり、そのために別途プレイブックのタスク記述が必要となる。
カテゴリー
Linux

【Ansible】yum モジュールで冪等性を保ったまま remi-release-7 リポジトリをインストールする書き方

はじめに

Ansible の yum モジュールでパッケージを指定したとき、通常ですとインストールがすでにされているか否かを気にする必要はなく、冪等性の担保も意識する必要がございません。

これと同じ気持ちで remi-release-7.rpm を yum モジュールでインストールしましたところ、2 回目のインストールで失敗してしまいました><。

TASK [php-fpm : Install remi-release-7] ****************************************
fatal: [default]: FAILED! => {"changed": true, "failed": true, "msg": "エラー: 何もしません\n", "rc": 1, "results": ["読み込んだプラグイン:fastestmirror\n/var/tmp/yum-root-YOhnx0/remi-release-7.rpm を調べています: remi-release-7.3-1.el7.remi.noarch\n/var/tmp/yum-root-YOhnx0/remi-release-7.rpm: インストールされたパッケージを更新しません。\n"]}
	to retry, use: --limit @/vagrant/ansible/site.retry

したがいまして、remi-release-7.rpm がインストールされているかどうかを評価する記述を追加しなければなりません!

今回は、その記録をノートいたします。

ポイント

  • stat を使用してインストールされるファイルの状態を取得する処理を入れ、結果を register を使って変数に代入する。
  • 変数.stat.exits を評価することでファイルの存在をチェックする。
  • デバッグ出力で内容を確認するために、debug を使用する。

Ansible コード例

カテゴリー
Linux

【WordPress】お手軽なデバッグ方法メモ

お手軽デバッグコードのポイント

echo '<pre>'; var_dump($arg); echo '</pre>';

var_dump 前後を echo を使って pre タグで囲むのがポイントですわね。

カテゴリー
Linux

【Git】cherry pick を理解する。そして各コミットを別々のブランチに振り分ける実践例

やりたいこと

  • ブランチ A のいくつかのコミットを、ブランチ B、ブランチ C に分けたい。
  • 具体的に言うと、ブランチ A に含まれるコミット A1 をブランチ B に、ブランチ A に含まれるコミット A2 をブランチ C に分けたい。
  • 誤解語弊を恐れず直感的にに言えば、マージの逆の操作をしたい。
カテゴリー
Linux

CentOS 5 に Git をインストールしたときのバージョンは 1.8.2.3-1.el5

環境

  • CentOS release 5.11 (Final)

CentOS 5 への Git インストールコマンド

yum --enablerepo=epel install git

EPEL リポジトリを指定しませんと、簡単気軽にはインストールできませんの><。

カテゴリー
Linux

【sed】特定の文字列を含む行頭または行末に指定文字列を追加するやり方

行末に追加するコマンド

# 特定の文字列を (正規表現可能) を含む行に対してのみ置換
# sed '/検索対象文字列/s/置換前文字列/置換後文字列を/g'
# 行末に文字列を追加
# sed '$ 追加文字列'
# 以上から
# 特定の文字列を含む行の行末に文字列を追加
sed '/検索対象文字列/s/$/行末追加文字列/' ファイルパス

行頭に追加する場合

行末を示すのは $ でした。これを行頭を示す ^ に変更するだけですの♪

# 特定の文字列を含む行の先頭に文字列を追加
sed '/検索対象文字列/s/^/行頭追加文字列/' ファイルパス
カテゴリー
Linux

【CentOS 6】pip install ply==3.4 すると yum での python-pip インストールが失敗する

失敗した手順

  1. yum -y --enablerepo=peel install python-pip
  2. pip install ply==3.4
  3. yum -y --enablerepo=peel install python-ply
  4. 失敗
カテゴリー
Linux

CentOS 7 に PostgreSQL 9.2 をインストール、設定のノート

インストール

yum -y install postgresql-devel postgresql-server

特にリポジトリの追加等は行っておりません。

次のバージョンがインストールされました。

# psql --version
psql (PostgreSQL) 9.2.15
#

初期設定

CentOS 6 では、initdb は postgresql-setup ではなく、service postgresql initdb でした。

CentOS 7 となり、サービスの起動等以外にも変更となり、この点がとくに分かり辛く、調べるのに時間を使ってしまいました><。

# 初期化
postgresql-setup initdb
# 自動起動を有効
systemctl enable postgresql.service
# 起動
systemctl start postgresql.service

設定ファイル編集 1. パスワード認証へ変更

# バックアップ
cp -a /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.org
# パスワード認証へ変更
sed -i -i 's|local   all             all                                     peer|local   all             all                                     md5|' /var/lib/pgsql/data/pg_hba.conf
sed -i -i 's|host    all             all             127.0.0.1/32            ident|host    all             all             127.0.0.1/32            md5|' /var/lib/pgsql/data/pg_hba.conf
sed -i -i 's|host    all             all             ::1/128                 ident|host    all             all             ::1/128                 md5|' /var/lib/pgsql/data/pg_hba.conf

次のように変更されました♪

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

設定ファイル編集 2. パスワード暗号化 (設定変更せず)

password_encryption (boolean)
ENCRYPTEDもしくはUNENCRYPTEDの指定なしで、CREATE USER もしくはALTER USERにてパスワードが指定されている場合、このパラメータはパスワードを暗号化するか否かを決定します。 デフォルトはon(パスワードを暗号化)です。

デフォルトでオンのため、次の修正は行いませんでした。

# バックアップ
cp -a /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.org
# パスワード暗号化
sed -i -e 's/#password_encryption = on/password_encryption = on/' /var/lib/pgsql/data/postgresql.conf

設定ファイル編集 3. スーパーユーザに (postgres) にパスワード設定

ヒアドキュメントを使って、シェルから実行しました。

su - postgres <<EOT
psql -U postgres
ALTER USER postgres encrypted password 'vagrant';
\q
exit
EOT

確認は、次の SQL で行うことができました。

SELECT * FROM pg_shadow;

設定変更の反映

PostgreSQL を再起動して、変更した設定を反映させています。

# 再起動して設定反映
systemctl restart postgresql.service

おわりに

次の Vagrant のテンプレート作成のために、久しぶりに PostgreSQL のインストールを行いました。

調べる中で覚えておきたいこともございましたので、Github にコードを反映させる以外にノートいたしました。

以上です。