2017年3月27日月曜日

[ansible] MSYS2でansibleの実行環境を構築した際のトラブルシューティング

pipインストール時にerror code 1で終了する。

Collecting cffi>=1.4.1 (from cryptography>=1.1->paramiko->ansible)
  Using cached cffi-1.9.1.tar.gz
    Complete output from command python setup.py egg_info:

        No working compiler found, or bogus compiler options
        passed to the compiler from Python's distutils module.
        See the error messages above.
        (If they are about -mno-fused-madd and you are on OS/X 10.8,
        see http://stackoverflow.com/questions/22313407/ .)

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in c:/users/username/appdata/local/temp/pip-build-5imbxi/cffi/

原因:Cコンパイラが見つからない。
対処:gcc パッケージのインストール($ pacman -S gcc)を行う。

ansibleインストール時に不明な型名'u_int'で失敗する。

  gcc -fno-strict-aliasing -march=i686 -mtune=generic -pipe -march=i686 -mtune=generic -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/python2.7 -c src/MD2.c -o build/temp.msys-2.7.0-i686-2.7/src/MD2.o
  In file included from /usr/include/python2.7/Python.h:8:0,
                   from src/MD2.c:31:
  /usr/include/python2.7/pyconfig.h:1218:0: 警告: "__BSD_VISIBLE" が再定義されました
   #define __BSD_VISIBLE 1

  In file included from /usr/include/sys/config.h:5:0,
                   from /usr/include/_ansi.h:16,
                   from /usr/include/string.h:10,
                   from src/MD2.c:30:
  /usr/include/sys/features.h:250:0: 備考: ここが以前の宣言がある位置です
   #define __BSD_VISIBLE  0

  In file included from /usr/include/python2.7/pyport.h:332:0,
                   from /usr/include/python2.7/Python.h:58,
                   from src/MD2.c:31:
  /usr/include/sys/time.h:104:34: エラー: 不明な型名 ‘u_int’ です
   bintime_mul(struct bintime *_bt, u_int _x)
                                    ^~~~~
  error: command 'gcc' failed with exit status 1

原因:__BSD_VISIBLE が誤って再定義され 'u_int' 型が宣言されない。
対処:/usr/include/python2.7/pyconfig.h #defind __BSD_VISIBLE 1 を、#defind __BSD_VISIBLE 0 に変更する。

ansibleインストール時に致命的エラー: ffi.h: No such file or directoryが発生する。

  Running setup.py bdist_wheel for cryptography ... error
  Complete output from command /usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-mL2y4U/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmppoXtiypip-wheel- --python-tag cp27:
  c/_cffi_backend.c:15:17: 致命的エラー: ffi.h: No such file or directory
   #include <ffi.h>
                   ^
  コンパイルを停止しました。

原因:libffi-devel パッケージの欠落。
対処:libffi-devel パッケージのインストール($ pacman -S libffi-devel)する。 ansible インストール時に CFLAGS を設定(CFLAGS=-I/usr/lib/libffi-3.2.1/include)する。

ansibleインストール時に致命的エラー: openssl/opensslv.h: No such file or directoryが発生する。

  gcc -DNDEBUG -march=i686 -mtune=generic -O2 -pipe -DNDEBUG -I/usr/lib/libffi-3.2.1/include -I/usr/include/python2.7 -c build/temp.msys-2.7.0-i686-2.7/_openssl.c -o build/temp.msys-2.7.0-i686-2.7/build/temp.msys-2.7.0-i686-2.7/_openssl.o
  build/temp.msys-2.7.0-i686-2.7/_openssl.c:434:30: 致命的エラー: openssl/opensslv.h: No such file or directory
   #include <openssl/opensslv.h>
                                ^
  コンパイルを停止しました。

原因:openssl-devel パッケージの欠落。
対処:openssl-devel パッケージのインストール($ pacman -S openssl-devel)する。

ansible でリモートホストに接続する際にエラーが発生する。

192.168.1.1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: mux_client_request_session: read from master failed: Connection reset by peer\r\nFailed to connect to new control master\r\n",
    "unreachable": true
}

原因:MSYS2 の open-ssh は複数の SSH セッションを束ねる ControlMaster 機能が使用できないため。
対処:ssh の引数から ControlMaster 機能に関する設定を削除する。

$ vim /etc/ansible/ansible.cfg
[ssh_connection]
ssh_args=""

with_itemsモジュールでエラーが発生する。

- name: Show OS_USER
  shell: echo "user name={{ item.name }}"
  with_items:
          OS_USER

fatal: [192.168.1.1]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'ansible.vars.unsafe_proxy.AnsibleUnsafeText object' has no attribute 'group'

The error appears to have been in '/home/username/roles/cent7_build/tasks/show_env.yml': line 4, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name: Show OS_USER
  ^ here
"}

原因:with_items モジュールの変数の指定方法に誤りがあった。
対処:変数の指定を - '{{ OS_USER }}' に変更する。最近のバージョンはこのように書く。

- name: Show OS_USER
  shell: echo "user name={{ item.name }}"
  with_items:
         - '{{ OS_USER }}'

リモートホストがSolarisの場合、TASK [setup]でエラーが発生する。

fatal: [192.168.1.1]: FAILED! => {"changed": false, "failed": true, "module_stderr": "",
"module_stdout": "/tmp/ansible_Cck5DI/ansible_modlib.zip/ansible/module_utils/facts.py:954: DeprecationWarning: object.__new__() taskes no parameters
Traceback (most recent call last):
  File \"/tmp/ansible_Cck5DI/ansible_module_setup.py\", line 134, in <module>
    main()
  File \"/tmp/ansible_Cck5DI/ansible_module_setup.py\", line 126, in main
    data = get_all_facts(module)
  File \"/tmp/ansible_Cck5DI/ansible_module.zip/ansible/module_utils/facts.py\", line 3518, in get_all_facts
  File \"/tmp/ansible_Cck5DI/ansible_module.zip/ansible/module_utils/facts.py\", line 3461, in ansible_facts
  File \"/tmp/ansible_Cck5DI/ansible_module.zip/ansible/module_utils/facts.py\", line 1482, in populate
  File \"/tmp/ansible_Cck5DI/ansible_module.zip/ansible/module_utils/facts.py\", line 1539, in get_memory_facts
ValueError: invalid literal for int() with base 10: '\\xcd\\xbd\\xcc\\xf3\\xba\\xd1\\xa4'
", "msg": "MODULE FAILURE"}

原因:/usr/sbin/swap -s の実行結果からスワップ領域を取得して int に変換しているが、取得した値が文字列のためエラーが発生している。

問題のコード int(out.split()[5][:-1])

対処:ansible が動作するロケールの設定を C に変更する。

$ vim /etc/ansible/ansible.cfg
[defaults]
module_lang=C
module_set_locale=true

参考

  • なし。

0 件のコメント:

コメントを投稿