Ansibleで外部変数ファイルの読み込み時に
デフォルトを用意しつつ、OS独自の設定も読み込みたい場合に使える技。
vars_files: - "vars/common.yml" - [ "vars/{{ ansible_os_family }}.yml", "vars/os_defaults.yml" ]
このように書いておくと、先のファイルが見つかった場合は先のファイルを読み込んでくれて、見つからない場合はos_defaults.ymlを読み込んでくれる。
Ansibleで外部変数ファイルの読み込み時に
デフォルトを用意しつつ、OS独自の設定も読み込みたい場合に使える技。
vars_files: - "vars/common.yml" - [ "vars/{{ ansible_os_family }}.yml", "vars/os_defaults.yml" ]
このように書いておくと、先のファイルが見つかった場合は先のファイルを読み込んでくれて、見つからない場合はos_defaults.ymlを読み込んでくれる。
以下のように定義して、タスクを実行すると必ずSkipされてしまうという謎現象に遭遇していた。
#変数定義 SOME_FLG: True #実施タスク -name: SOME_FLG=Trueの時のみ実行 when: SOME_FLG == "True"
原因は変数定義のTrueの後にスペースが一文字入っていたという凡ミス。
こういったハマリを防ぐためにも、文字列はきちんとダブルクォーテーションで囲うべし。
巨大なインポートデータの時に発生したエラー。どうやらバッファが不足しているらしい。
Webで調べたとおり/etc/my.cnfの設定を変更。
[mysqld]セクションにmax_allowed_packetの列を追加した。
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mysqld according to the # instructions in http://fedoraproject.org/wiki/Systemd # ここを追加 max_allowed_packet = 1280M
mysqlを再起動して以下のコマンドで確認する。
mysql> SHOW VARIABLES LIKE 'max_allowed_packet'; +--------------------+------------+ | Variable_name | Value | +--------------------+------------+ | max_allowed_packet | 1073741824 | +--------------------+------------+ 1 row in set (0.00 sec)
Windows系のファイルの改行コードはCRLFなので、これをLinuxのviで開くと^Mという記号が目障りである。
viの変換を使ってもいいのだが、便利なコマンドがあるのでそれを入れてしまう。
yum install dos2unix dos2unix 変換したいファイル名
何も指定しないとファイルを直接書き換えてしまうので注意。
逆にWindowsのCRLFに変換するにはunix2dosを使うこと。
MySQLもAnsibleから操作できるのだが、pythonのモジュールが必要だと怒られてしまった。
msg: the python mysqldb module is required
AmazonLinuxならばMySQL-pythonパッケージをインストールすればよい。
しかし、pip-2.7経由でansibleを使っていたのでこれでもダメだったようだ。
次はpip-2.7を使ってインストール
pip-2.7 install MySQL-python You are using pip version 6.0.8, however version 7.0.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Collecting MySQL-python Downloading MySQL-python-1.2.5.zip (108kB) 100% |################################| 110kB 4.0MB/s sh: mysql_config: コマンドが見つかりません
mysql-develをインストールして再実施。今度はgccがなくてエラー・・
無事コンパイル成功したけど、まだmysqldb moduleがないとのエラー・・・・
pip-2.7 freeze | grep -i mysql You are using pip version 6.0.8, however version 7.0.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command. MySQL-python==1.2.5
ちゃんとインストールされているのに!よくわからないので撤退しかかるが、
ここで公式ドキュメントに
「Note
Requires the MySQLdb Python package on the remote host. For Ubuntu, this is as easy as apt-get install python-mysqldb. (See apt.)」
なんとリモート側にインスールが必要だとさ!頑張って操作する方に入れていたという・・・あほかい!
Tomcat8の実行にはJDK7以上が必要となっている。
AmazonLinuxの2015/05現在の最新バージョンであればOpenJDKのランタイムが入っているので、以下のコマンド打ち込めばTomcat8インストールと起動までできる。
yum install tomcat8 /etc/init.d/tomcat8 start
ついでにOpenJDK1.8を入れてみたけど、こちらでも問題なく起動。
Tomcat8ならではの機能は全く使っていないのだが!
Ansibleでシンボリックリンクの作成はfileモジュールで行う。
state: linkがポイントである。
- name: インストール先にシンボリックリンクを張り替える file: src: /usr/java/jdk1.7.0 dest: /usr/java/jdk state: link
CF-S8からS10までとN8からN10まで共通のHDD交換手法
以前CF-S10でHDDをSSDに交換したが、今度は容量が大きいHDDに交換してみた。
バッテリーをはずして、二本のねじをはずせばふたがとれる。
HDDは9mmが入るので、SSDの場合でも9mmでOK。
今主流になりつつある、薄型の7mmでなくてもよい。
前回はわざわざスペーサーを買ってきて9mmにして、取り付けたのだが、中のスポンジが邪魔になるので7mmのままでも大丈夫。
また9mm厚さのHDDの場合、スポンジが邪魔になるので使用済みカード(磁気カード)などを使って奥に差し込むようにするとスムーズに行く。
lftpでproxyを使うときの設定。
システムの設定を使うのかわからないが、以下の設定で確実にproxyを利用するようになる。localhostにはsquidがデフォルトポートでインストールされているとする。
$ lftp lftp :~> set ftp:proxy http://localhost:3128/ lftp :~> open ftp.riken.jp lftp ftp.riken.jp:~> dir
EPELリポジトリでインストールしたansibleは、AmazonLinuxの最近のバージョンだと動かなくなっている。
sudo yum install ansible --enablerepo=epel
実行するとエラーとなってしまう。原因はpythonのバージョンが2.7になったからということでならばpipで入れてしまうのだ。
sudo pip-2.7 install ansible
今度はエラーなく無事終了!