を作るにあたって、情報源や、勉強になったことなどをノートしていきます♪
カテゴリー: Linux
VPS や Vitual Box で使用している Linux、CentOS について勉強したアプリ、設定、コマンドなどを紹介いたします!
まとめ
- debug モジュールを使って状況を出力
- Vagrantfile で Ansible の実行状況を詳しく出力
- Vagrant の snapshot 機能を利用
- Vagrant の provision 機能を利用
ポイント
Ansible を使ったリポジトリのインストール方法とそれぞれの特徴。
- プレイブックの files フォルダ等にリポジトリファイルを用意し、copy モジュールを使って配置する。
- メリット: インストールが楽。
- デメリット: アップデートには追従できない。
- yum モジュールを使用してインストールする。
- メリット: アップデートは楽
- メリット: state: present に設定すれば、冪等性を保つことができる。
- デメリット: yum で扱えるリポジトリが限られる。
- デメリット: state: latest に設定する場合、インストールに yum モジュールを使用するが、インストール済みの場合にプレイブックを実行するとエラーとなる。
- yum_repository モジュールを使用してインストールする。
- リポジトリファイルの内容を把握し、設定を自分自身でプレイブックに書いていく必要がある。
- デメリット: そのため記述量が多くなる。
- メリット: 逆に、詳細なリポジトリ設定と制御と、詳細なプレイブックの管理が可能。
GPG キーのインストール方法とそれぞれの特徴。
- プレイブックの files フォルダ等に GPG キーファイルを用意し、copy モジュールを使って配置する。
- メリット: インストールが楽。
- デメリット: アップデートには追従できない。
- rpm_key モジュールを使用して GPG キーをインストールする。
- yum_repository モジュールの gpgkey オプションにパスまたは URL を指定する。
- デメリット: パスを指定する場合は、GPG キーファイルを別途用意する必要があり、そのために別途プレイブックのタスク記述が必要となる。
はじめに
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 コード例
【WordPress】お手軽なデバッグ方法メモ
お手軽デバッグコードのポイント
echo '<pre>'; var_dump($arg); echo '</pre>';
var_dump 前後を echo を使って pre タグで囲むのがポイントですわね。
やりたいこと
- ブランチ A のいくつかのコミットを、ブランチ B、ブランチ C に分けたい。
- 具体的に言うと、ブランチ A に含まれるコミット A1 をブランチ B に、ブランチ A に含まれるコミット A2 をブランチ C に分けたい。
- 誤解語弊を恐れず直感的にに言えば、マージの逆の操作をしたい。
環境
- CentOS release 5.11 (Final)
CentOS 5 への Git インストールコマンド
yum --enablerepo=epel install git
EPEL リポジトリを指定しませんと、簡単気軽にはインストールできませんの><。
行末に追加するコマンド
# 特定の文字列を (正規表現可能) を含む行に対してのみ置換 # sed '/検索対象文字列/s/置換前文字列/置換後文字列を/g' # 行末に文字列を追加 # sed '$ 追加文字列' # 以上から # 特定の文字列を含む行の行末に文字列を追加 sed '/検索対象文字列/s/$/行末追加文字列/' ファイルパス
行頭に追加する場合
行末を示すのは $ でした。これを行頭を示す ^ に変更するだけですの♪
# 特定の文字列を含む行の先頭に文字列を追加 sed '/検索対象文字列/s/^/行頭追加文字列/' ファイルパス
失敗した手順
yum -y --enablerepo=peel install python-pip
pip install ply==3.4
yum -y --enablerepo=peel install python-ply
- 失敗
インストール
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 にコードを反映させる以外にノートいたしました。
以上です。