Ansible Moleculeでテスト

TL;DR Ansible Moleculeでのテストの実装はコツがいる 経緯 Ansible MoleculeでAnsibleのroleをテストしたが、結構コツがいるようだったので、メモ。 まず、現時点(2022/9/27)で日本語で言及している記事自体が少ない。以下は参照にさせていただいた。 MoleculeでAnsibleのRoleをテストする - その1 Molecule 3を試す ポイントは以下。 以下の流れで行う(https://molecule.readthedocs.io/en/latest/getting-started.html#run-test-sequence-commands) molecule create (1.Dockerコンテナの生成、起動) molecule converge (2.対象ののロールの実行) molecule verify (3.テスト) molecule destroy molecule testで一連の動作をまとめて実行できるとの記載があるが、自分の環境ではverifyがされていないので利用していない 途中でコケたら、molecule loginでコンテナにログインして実際のコマンドを実行するなどして確認する 1.Dockerコンテナの生成、起動 molecule.ymlを設定する imageにてDockerコンテナのタグを指定する 例えばubuntu:22.04を指定した場合、python3がインストールされていないためにansibleの各種タスクが実行できずにコケる。また、sudoもインストールされていないため、該当のタスクがbecome: yesを指定しているとやはりコケる。対策としてcommandを指定する。 platforms: - name: instance image: ubuntu:22.04 command: - "apt update" - "apt install -y sudo python3" pre_build_image: true 2.対象ののロールの実行 converge.ymlを設定する…が、通常初期値で問題ないはず。他のタスクも実行したい場合は修正が必要なのかも 3.テスト verify.ymlを設定する。 assertタグでうまくいけばTrueとなるよう設定する。ファイルの存在をチェックする場合は以下のような感じ - name: Register if file exists stat: path: "/path/to/file" register: path_to_file - name: Check if file exists ansible....

September 27, 2022 · 1 min · tack41

MariaDB(MySQL)の設定ファイルは.cnf

TL;DR MySQL(MariaDB)の設定ファイルの拡張子は.cnf .confではだめ。includedirでもだめ。 経緯 サーバに直接インストールしていたZabbixを、Raspberry Pi4上のDockerコンテナに移行しました。以前x64上のDockerコンテナで稼働していたことがあるので構築はかんたんに済み、移行もOK。が、併せてZabbixのメジャーバージョンアップを行うとupgrade処理の途中でコケる。日本語を含むデータの変換で失敗している。 show variable like '%char%'を実行すると、system,clinentがlatinになってる… 設定ファイルにはutf8mb4を設定しているのになぜか反映されない。 設定ファイルconf/custom.confを/etc/mysql/conf.dにマウントしていたのだが、VScodede拡張子を.cnfに変えるとVScode上でファイルの認識が変わり、コンテナを再起動すると文字コードが正しく認識された。 公式サイトを見ればわかる話ではあるのですが、htmlファイルを.html,.htmのどちらでも認識するのと同じ感覚で…また、includedirに指定されたフォルダにおいていたので、読んでくれるだろうと思いこんでました。 この設定ファイルは以前Dockerコンテナで運用していた際に使用していたものでしたが、当時からバージョンアップがうまく行かない問題があり、これが原因だった可能性があります。 ちゃんと公式サイトを見ましょうというお話でした。

September 27, 2022 · 1 min · tack41

アルファメールプレミアでDBバックアップ

TL;DR アルファメール(プレミア)ではshellの直接実行はできない。が、phpのexecを利用すればほぼ同じことができます。 経緯 自社のWEBサイトを大塚商会のアルファメールプレミアでMovable Typeを利用して運用しています。バックアップに関して、コンテンツファイルはFTP(over TLS)でCLIで取得できますが、DBに関してはphpMyAdminを利用してブラウザからボタンポチポチで取得していました。 WEBコンソールのメニューの中に「cron設定」という項目があるのに気づいて調べたところ、拡張子が「.cgi」または「.php」のファイルの一覧から選んで指定時刻に実行してくれるということのようでした。 こういうバッチ的な利用が可能なのであれば、execでOSコマンドも実行できるのでは、と思ってmysqldump叩いてみたところ実行できました。これはありがたいということで、AWS SDK for PHPのpackaged phar版をダウンロードしてS3へのアップロードまでできました。 注意事項として、認証情報をファイルから取得する場合、そのファイルを含むパスに認証をかけないと危険です。 定期的に実行したいというより、サイトを更新したときに実行できれば良いので、ブラウザで該当のphpファイルを直接呼び出しています。 phpMyAdminから手動でダウンロードしてS3にアップというのは地味に面倒なので、ブラウザ呼び出し一発でできるようになって工数削減できました。

March 26, 2022 · 1 min · tack41

MariaDBのON UPDATE CURRENT_TIMESTAMPに対するUPDATEの動作について

リンク先同様、しばらく悩んでしまったのでメモ。 MySQLでON UPDATE CURRENT_TIMESTAMP で更新時にタイムスタンプを自動更新するように設定している場合でも、UPDATE前後で値に変化がなければタイムスタンプは更新されない。 [https://qiita.com/nao_tuboyaki/items/bef44862f6ddffd4f0b5][https://qiita.com/nao_tuboyaki/items/bef44862f6ddffd4f0b5)

November 13, 2018 · 1 min · tack41

テーブル定義の移行でよく使う方法

社内DBを試行錯誤しているため、DB間データ移行の前段としてテーブル定義をコピーしたいことがある。 大抵のDBでは無料でもツールが充実しており、ODBCライブラリを入れればよっぽど問題ないと思うのだが… MySQL … Workbench Oracle … SQL Developer SQL Server … SQL Server Management Studio(SSMS) Windows 10 Pro 64bitで、SSMSからOracleにアクセスしようとしたところ、どうにもエラーでうまく行かない。64bitのInstant Client + ODBCをインストールし、OSのODBC管理ツールでテスト接続は成功しているのだが… で、こういう時はAccessでODBC経由でリンクを貼る分にはまず失敗しない。この状態でテーブルをAccessにテーブル定義のみコピーし、そのAccessのテーブルをSSMSでインポートするとうまくいく。

November 30, 2017 · 1 min · tack41