2020年 05月の投稿を表示しています

ansible-galaxy で php を入れる

今どきはコンテナ化しちゃうのがアプリケーションとしては何かと楽(それはそれで別の大変さがある)なのだけれど、ぼくの個人的な管理下のとあるサーバはまだまだコンテナの波に乗れていないので、なんかこう便利なやつを使いたかった。というわけで ansible-galaxy に行き着いたのだった。

ansible? ansible-galaxy?

Infrastructure as Code...コードじゃないんだよな Infrastructure as YAML といわれるようなソリューション。
インフラ…に限らず、やりたいことを YAML で書いて、そのとおりにポンッと反映することができるすごいもの。

ansible-galaxy は、そのやりたいこと、を共通化して、コミュニティベースで使いまわしを出来るようにしたもの。
PHP での composer とか Docker の docker hub とかそういうイメージ。

ansible-galaxy で PHP を扱う

何も考えたくない...

geerlingguy.php_roles を使う。
Readme に書いてあるけど、シュッと好きなバージョンの PHP 環境が構築される。

tideway, xhprof, xdebug あたりが入っているのがつおい。べんりなじだいだなあ

ぼくのケース

とはいえまあ、そんな、色々全部入りじゃなくても…。と思ったのでこういう感じにした。

1. requirements.yml を準備

簡単にいうと使う role を定義しておくファイル ansible-galaxy コマンドで利用することで、記述されているものを手元に持ってくることができる。
(python のある requirements.txt から来てるのかな、このネーミング。)

書き方はこのあたりに書いてある。
Galaxy User Guide — Ansible Documentation > Installing multiple roles from a file

最低限 geerlingguy.php があれば PHP をインストールできるが、バージョンアップとかリポジトリ都合も考えるとこんな感じにした。

# php roles
- name: geerlingguy.repo-remi
- name: geerlingguy.php
- name: geerlingguy.php-versions

# other roles
- name: ...

ansible なコマンドを覚えるのがなかなかつらいので、いったん、こんな Makefile のタスクも用意しておいた。

.PHONY: install-requirements
install-requirements:
    ansible-galaxy install -r requirements.yml -p roles

このタスクによって requirements.yml に書いた内容を roles ディレクトリにダウンロードすることができる。

2. playbook を書く

ダウンロードしてきた role を指定すれば OK

- hosts: my-server
  vars:
    php_version: "7.4"
    php_packages:
      - php
      - php-cli
      - php-common
      - php-bcmath
      - php-json
      - php-mbstring
      - php-pdo
      - php-pecl-memcache
  roles:
    - geerlingguy.repo-remi
    - geerlingguy.php-versions
    - geerlingguy.php
    - 他のroleいろいろ

どんな vars があるかは geerlingguy.php を見るのがはやい 。
php.ini で指定できるよく使うものは選択できる。それ以外で自由にやりたくなったら template にすれば OK

3. 実行したよ

$ ansible-playbook -i hosts my-server.yml
...

で、しばらくしたら終わるので、確認。

$ ansible my-server -a "php -v"
my-server | CHANGED | rc=0 >>
PHP 7.4.6 (cli) (built: May 14 2020 10:39:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies

はい、指定したバージョンの PHP が使えるようになりました。おわり

前後の記事

Prev:

(PS4) WolfensteinThe New Order と Youngblood をノーマルでクリアした

どちらもトロコン、追加コンテンツはやってない・・・。

Wolfenstein: The New Order

いつだったか、セールになっていたときに買っていて、しばらく寝かされていた。
ふとどんなゲームだっけ?と Wikipedia をみたり Youtube を見たりしたら、めちゃめちゃ面白そうだったのでプレイし始めた。

ゲーム性としては CoD:MW を思い出すような、わりと一本道のストーリーゲー。ちょっと広めのマップもあるけれど、そこまで自由度が高いわけではない。
光量のすくないシーンも多かった。

序盤は、ナチスが謎のハイテク化 WWII で勝利し世界を制圧した、なるほど、そういう世界観か〜〜、と思ってプレイしていたところ、突如、トレーラームービーにあるような大きなロボが出てきたり、謎のハイテク化の正体がわかったり、超展開が続いて、なかなかボリュームのあるストーリーだった。ざっくりと 10〜20 時間くらい、かなあ 30 時間は行ってなさそうな感じ PS4 のプレイ時間トラッキングはやく来てくれ〜〜〜

アラートを鳴らさないようにステルスプレイも出来るし、ドンパチゴリ押すこともできる。大体のマップで無理があってそのうちドンパチやることになるので、初めからドンパチしたほうが楽しいかもしれない。ものすごく露骨なグロテスクな要素(SAW とかのイメージ)はなく、洋 FPS に慣れていれば大丈夫なくらい、イベントシーンで激しいのが出てくる。過激な言葉はじゃんじゃか出てくるのでそういうのがだめな人はだめそう。

Wolfenstein: Youngblood

Wolfenstein: Youngblood

これも一緒にセールだったときに買った。ストーリー的には The New Order の更にそのあと 20 年くらいすすんだ世界で The New Order 主人公の BJ ブラスコビッチの 2 人娘が主人公。あまり The New Order での何かは絡んでこないので、このゲーム単品でも十分遊べる。世界は先に進んでいるので、敵の兵器や、自分たちが特殊なアーマーを装備していたりする、あまり書くと The New Order のネタバレにもつながってしまうのでかけないけれど。

基本的なゲームシステムやらそのあたりは The New Order とだいたい一緒。どちらのキャラを最初に選んでも、スグに選ばなかったほうが持っているもの(武器、スキル)を回収できる。武器を強化、スキルを整えていけば、重火器を複数持ったり The New Order 以上にドンパチできる。敵のアーマーが 2 種類あって、それぞれに効きやすい武器が均等にあるので、敵の様子をみて武器の切り替えが必要。もっとも後半はほとんどの場面でブリッツゲヴェーア(サブマシンガン)がメインだった、火力も、弾の入手しやすさも優秀。まだ気づかれていないときは投擲、大型相手はレーザークラフトワークをよく使っていたと思う。なお、ラスボスはノーマルでやっていたものの、数回やりなおした。下手説もあるが倒し方が難しいのと敵火力が激しい。

The New Order との大きな違いはオープンワールドチックになっており、そこそこの広さのあるマップをあちこち探索して、アイテムを集めたり、クエストを進めていったりする。一度いったマップにもまた行ける。あとオンラインで 2 人 CO-OP ができる。オフラインだと相方は CPU が勝手に動く。

こちらはリリースからアップデートがあって、ラスボスあとにもミッションが続く。具体的には、より強敵が出てくる新しいマップが増えており、新たなコレクターアイテムが待っている。まあやっていないのですが…

前後の記事

Next:
Prev: