ansibleでCentOS8 にmariadbインストールし、rootパスワードを変更しようとしたらはまるの巻

ちょっとphp8も出たし、CentOSも8への移行が進むだろうしとうことで、

最新のテスト環境つくれるようにしとこうとansibleのスクリプトをいじってたところ、

 

いままで普通にできてた、mariadbのインストール時にパスワードを変更するのにハマった。

fatal: [php8]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")"}

 root でログインできないよ!って言われる。

 

あれやこれや試した後、

CentOS8で、ansibleが使うライブラリが変更になっていた件を思い出した。

もともと、MySQL-python をつかっていたのだけど、CentOS8からはパッケージがなく、

python3-PyMySQL 変更していたのだった。

 

すると、こういう記事があり、どうもPyMySQLだとsocket接続じゃなく、TCP接続を優先するとのことで、 login_unix_socket  を使ってみてという記述があった。  

bleepcoder.com

 

えー、と思いつつ設定したら通った。

 

普段からやってないと、色々とハマるなーとおもった暑い日でした。

yumでインストールするremi-php74パッケージ名が実は色々変更になっている件

いつものように、digitaloceanで、vagrant provision すると

なぜか、php-pecl-zip がインストールできず、php-pecl-jsonc はそんなパッケージない!と怒られた。

 

うーん、うーんと、頭を悩ませていると、こういうことらしい。

Ex:
* json => php-pecl-json => php-pecl-jsonc (PHP 5.x) => php-json (PHP 7.x) => php-common (PHP 8.x)
* mysqli => php-mysqlnd
* xmlwriter => php-xml
* redis => php-pecl-redis => php-pecl-redis4 => php-pecl-redis5
* zip => php-pecl-zip
* sodium => php-pecl-libsodium => php-pecl-libsodium2 => php-sodium
* etc

コピペだと気づかないけど、気をつけようっと。

注)php-pecl-zip → php-zip が正しいです。

forum.remirepo.net

Macで スタンドアローンでswfファイルを再生する

結論から言うと、普通にadobeのサイトから落としても、スタンドアローン版はインストールされない。

get.adobe.com

 

下記のデバッグダウンロードから、

Download the Flash Player projector

を選択して別途インストールすればいけました。

www.adobe.com

 

小一時間悩んだので。。。

BacklogとJenkinsおじさんをくっつけたくて・・・

BacklogのGitにpushした時に、自動的にテストサイトに反映させたくて、

webhookを使ってみました。

 

そのために、

1. Jenkins1.5系だったので、2系最新にアップデート

2. Generic WebHook Triggerプラグインを追加

3. BacklogのGitにpushしてテスト

 

してみました。

 

まず、1でアップデートがうまくいかず四苦八苦。

結果Jenkins2だと、AJPサポートが廃止されたようで、

/etc/sysconfig/jenkinsを変更したり、

不要な起動オプションを削除したり、

cacheファイルを削除したりといろいろ試行錯誤してようやくJenkins2にアップデート

 

最初、下記のプラグインでjenkinsを叩こうと思ったが、tokenは設定下にも関わらずうまく動かず認証エラーがでて断念。

Authentication required
<!--
You are authenticated as: anonymous
Groups that you are in:Permission you need to have (but didn't): hudson.model.Hudson.Read
... which is implied by: hudson.security.Permission.GenericRead
... which is implied by: hudson.model.Hudson.Administer
--></body></html>

https://wiki.jenkins.io/display/JENKINS/Build+Token+Root+Plugin

 

そこで Generic WebHook Trigger を使ってみたところ、あっさり通った。

 

f:id:go_nash:20190425150955p:plain

ジョブの設定画面

ビルドトリガの設定で、Generic Webhook TriggerにチェックをいれTokenを指定するだけです。

 

私の場合、すでにsshを設定してあったので、

テストサーバにJenkinsからsshログインしてpull checkoutする形をとりました。

 

次に、Backlogのgitに変更をPUSHするだけ.

あとはJenkinsサーバにIP制限をかけていたので、許可をするだけです。

backlog.com

 

以上!

アプリ作成編 〜Google G SUITE appmakerを使ってみた 〜

社内のインベントリ情報の検索ツールを作ってみた。

CRUDツールである。

 

おおまかな手順は下記の通り

  • GCP上で、データソースとなるSQLインスタンスを作成
  • G Suiteの管理画面で、Google Cloud SQL インスタンスの設定を行う
  • インスタンスにappmaker からアクセスできるようにGCPのAIMでCloud SQL 管理者として、appmaker-maestro@appspot.gserviceaccount.com を追加
  • appmakerでアプリを作成し、データ→モデルを作成→Google Cloud SQL を選択
  • 初期データがあれば左上にあるIMPORT DATA FROM SHEET からデータを投入(モデル作るときにインポートできるようにしてくれればいいのに!)
  • ページ・UIを作成
  • デプロイ

 

あとは、触りながら、下記のアクションの方法を参照にしながら作れば

なんとか形になるはずです。

Google App Maker ー デフォルトアクションの一覧 - Qiita

 

 

ちょっとしたTIPSなど

 

1. SQLインスタンスGCPに作成する時は、us-central1 で作成すべし

良かれと思って、日本のリージョンに作ったけど、us-central1に作れと怒られましたw

 

2. プレビューとデプロイは別データ

初期データなどをインポートするときにわかることですが、previewとデプロイには別々にデータを投入する必要があります。

 

3. 共通する処理はSCRIPTSに書け

例えばデータを検索するロジックなどは、client script(javascript)を書き

検索ボタンのonClickイベント時にCustom Action で指定して発火させます。

function useQueryBuilder() {
var text = app.pages.index.descendants.FilterText.value;
if (text === null) {
app.datasources.account.query.where ='';
} else {
app.datasources.account.query.where = '(target contains :Value) or (login contains :Value) or (note contains :Value)';
app.datasources.account.query.parameters.Value = text;
}
app.datasources.account.load();
}

 

4. ちゃんと権限設定しよう 

appmaker  のアプリに対する権限設定がわかりづらいので理解の足しになれば。

go-nash.hatenablog.com

 

 

権限設定編 〜Google G SUITE appmakerを使ってみた 〜

共有ディスクをNASから、Google Drive に移行したのに合わせて

社内用ツールをapp maker を使って作ってみたお話です。

 

以前は、アプリケーションフレームワークのscaffoldを使って、簡単なCRUDアプリを作ってましたが、

サーバーとして使ってたPC壊れるし、VM取り出したり、再セットアップするの疲れるし、ということで、せっかく使えるようになったGoogle appmaker を使ってみることにしました。

 

使ってみた感想としては、

英語なのと、UIというか権限の仕組みがちょっとわかりづらい。

というか、自動で保存されたり、SAVEボタンを押さないと保存されなかったり、

UIが統一されておらずそれも混乱の元になっていたりします。

 

使うにあたって行なった設定は下記

 

https://appmaker.google.com

で新規にアプリを作成後アプリのアクセス権限を設定します

 

1. ロール作成

右上にある歯車アイコンをクリック

APP SETTING→Security → User's accountを選択→Roles →組織用のロールを追加

※この時点で組織用のロール名は好きにつけて追加すればいいだけ。

f:id:go_nash:20190306120739p:plain

appmaker role

2. ごにょごにょアプリを作成

この辺りは後でアプリ作成編で解説

 

3. デプロイを行う。

右上にある歯車アイコンをクリック

DEPLOYMENTS→PUBLISH NEW DEPLOYMENTS→Users with role access: XXXX

XXXXに1で作成したロールが表示されているはず。

 

そこに、Google のユーザや、グループを追加すると、そのデプロイへのアクセス権限が得られるというわけ。

f:id:go_nash:20190306121131p:plain

deploy members

 

ここで1点注意点がありました。

会社だとグループで管理するのが便利ですが、どうやらグループを入れ子で持つグループは対応していないようです。

例えば、everyone@example.com グループがあったとして、

everyone の中に、system@, directors@, designers@ といった子グループが入っている場合、everyoneを指定しまうと、アクセス権限を持てませんでした。

 

ただ、直接ユーザを含んだグループだと権限がちゃんと振られたので一安心。

 

appmakerはデプロイ毎に権限を管理する仕組みのようです。

 

 

 

macbook pro をmojave にアップグレードしたらバッテリーの減りが早いし、ファンが回り続ける

対処したこと。

 

- SMCリセット

support.apple.com

 

でも多分これが原因ではなさそうだった。

 

- configd と internet sharing

アクティビティモニターをみると、

configdというプロセスが80%以上CPUを食っていた。

その下にinternet sharing のプロセスがありそれも、20-30%と

なんで?というぐらいCPUを消費していた。

そこで、インターネット共有をオフにしてみた。

インターネット共有をオフ

mojave-internet-sharing

 

 

- 結果

ファンが静かになりました!

おそらくバッテリーの減りスピードも改善されていることでしょう・・・

 

- 参考ページ

discussions.apple.com