Ansible テンプレートを元に変数を埋めてコピーするtemplateモジュール

templateモジュール自体はファイルコピーとほぼ同じなのだが、変数部分を置換後にコピーするというのが違い。

templateタスクの記載例はあるのだが、置換元のファイルの記載方法についてはあまりなかったようなのであげてみた。

下記例は/etc/hostsに変数hostnameに定義した値を展開してから、コピーするタスク。実施条件としてhostname変数があることも入れている。

# hosts
- name: /etc/hosts setup
  template: src=hosts.j2 dest=/etc/hosts
  when: hostname is defined

hosts.j2の記載は置換部分をansibleと同じように{{ 変数名 }} で記載しておく。

127.0.0.1   {{ hostname }}.localdomain {{ hostname }} localhost localhost.localdomain

上記の場合はhostname変数が展開される。

カテゴリー: Ansible | タグ: , , | コメントする

CentOS7 テキストインストールは Tabキーを押して、文字列textを加えて起動する

CentOS7のテキストインストールについて、まともな記事が出てこないので、

CentOSのデフォルトのGUIインストールだと、仮想マシンのコンソールでは上下にスクロールせねばならず都合がわるい。

CentOS7はテキストインストールのほうがよいだろう。

インストーラーでTabキーを押すと、起動コマンドが出てくるので、その末尾にtextと加えればテキストインストールモードが起動する。

カテゴリー: CentOS, Linux | タグ: , | コメントする

Ansible 実行時に対象ホストを動的に変更する

Ansibleを実行していて、インベントリにあるホストを実行時に変更したいときがある。
たとえばテスト実行ではローカル対象にして、いざとなったらリモートにしたいなど

そんな時は下記のようなplaybookを記載しておくと、実行時に動的に対象ホストが変更できる。
入力するホストはインベントリに記載されているホスト名と一致させること!

- hosts: '{{ target_host }}'
  sudo: yes
  roles:
    - setup
  vars_prompt:
    - name: "target_host"
      prompt: "Please enter target_host"
      default: "default"
カテゴリー: Ansible | コメントする

Ansible 設定ファイルに行を追加するなら lineinfile

Tomcatの設定ファイルにJAVA_OPTSを追加したい。
一番簡単なのは設定ファイルごとcopyしてしまうことだが、
単に下記の一行があればいいというのであれば、lineinfileを使えばよい

- name: tomcat conf
  lineinfile:
    dest: /etc/tomcat8/tomcat8.conf
    line: JAVA_OPTS="-server -Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:PermSize=256m"
カテゴリー: Ansible | タグ: , | 1件のコメント

vim #を勝手に入れる迷惑な自動インデント 防止

vimでコメント付きの行をペーストすると、その行以降すべて#のコメントから始まり、さらにはインデントされてしまうという状況に陥った。

設定で防ぐ。

コマンドモードに移動して、以下のコマンド実施

:setlocal formatoptions-=r

これで無事勝手に#とインデントが入ることはなくなった!

または
:set pasteでも良い

こっちのほうが覚えやすいね。

カテゴリー: Linux | タグ: | コメントする

Ansible whenで変数がないときのエラー fatal: [localhost] => error while evaluating conditional:

Ansibleは便利なツールだが、エラーメッセージが不親切極まりない。

この場合変数が未定義なためエラーとなっているのであるが、もうちょっと踏み込んでエラーメッセージを出してもらいたいものだ。

変数を定義して、実行するには外部から動的に指定するかvarsのファイルに記載しておく。

カテゴリー: Ansible | タグ: , | コメントする

Ansible ローカルで簡単にplaybookをテストする

Ansibleは便利なのだが、トライ&エラーで方法を探ることが多く、ローカルで実施できた方が便利な時が多い。

というわけでローカルでシンプルに実験できる方法。

### SETUP ansible working
- hosts: localhost
  connection: local
  tasks:
    - name:
      shell: >-
       echo "hoge" > /var/tmp/hoge;
       echo "fuga" >> /var/tmp/hoge

上記ファイルをtest.ymlで保存して、以下のコマンド流せばOK。
あとは-name以下の組み合わせをコピーしていけば、実験用お手軽playbookの出来上がりだ。

ansible-playbook test.yml
カテゴリー: Ansible | コメントする

Ansibleで未接続のホストにパスワード認証で接続するときは相手ホストに手動接続すべし

Ansibleで自動構築練習中だが、そのマシンで接続したことがない(~/.ssh/knowns_hostにないもの)に接続したら以下のエラーが出た。

fatal: [sshhost] => Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host.

めんどくさいので手動で一度接続して該当ホストの公開鍵を~/.ssh/knowns_hostに追加した。

その後同じplaybook実施して無事成功。

なお公開鍵認証で接続するようにするのが望ましく、このパスワード認証はその公開鍵認証を有効にするための初期構築にのみ利用している。

カテゴリー: Ansible | 2件のコメント

iPhone テザリングでアクセスポイントが出てこない場合の対策

以前にiPhoneだと以前テザリングに成功した場合でも、アクセスポイントが出てこないというエントリーを投稿した。

その後も利用するたびにインターネット共有をOFFにしてからONにして運用回避していたのだが、本日まったくつながらずネットでさらに情報を収集した。

なんとiOSのテザリングの場合、検出可能な時間はインターネット共有の画面を開いている間か閉じてから90秒以内らしい。
道理で途中でつなごうと思ってもアクセスポイントが出てこないわけだ。

そんな異様な使用ならインターネット共有の画面を閉じるときに警告を出してほしいもんだ。

カテゴリー: Apple | タグ: , | コメントする

CopyTransManager iTunesなしでiPhone/iPod touchに曲を転送 (ただしドライバーのインストール必須)

iOS系の一番嫌いなところは曲の転送がiTunesを介して、勝手に(!)行われるところ。

もう一つは自分で管理しているフォルダ構成を無視して、MP3に付随するID3タグ情報をもとに勝手に分類すること。
(いわゆるアルバム バラバラ事件)

というわけでこれまでほとんど音楽はAndroidで利用していたのだが、ID3タグの整理をすることを前提にすれば
電池の持ちが抜群だが、時代遅れとなりつつiPod touch4thに寄せたい。

昔にCopyTransManagerを使ったことはあったが、その時はiTunesと併用だったが、今度はiTunesを全く入れない状態で試してみた。
以前誤解していたのだが、CopyTransManagerの実施には、iTunesが必須ではなく、iTunesに含まれるドライバーが必須なのである。またiOSのバージョンアップするとドライバーも更新の必要があるかもしれないので注意。

CopyTransManagerの利用方法としては、
ドラッグ&ドロップして放り込み、左上のアップデートボタンで更新を反映させるだけ!
CopyTransManagerは曲を送ることはできるが、Podcastのバックアップなどは有料のCopyTransを利用しないとだめ!

CopyTransManager V 1.0.5と以下の組み合わせで成功を確認した!
iPod touch4th(iOS 6.1.6)
iPhone6(iOS 8.1.1)

カテゴリー: Apple | タグ: , | コメントする