ansible-playbook -K -vvv ansible/fetch-database.yml
は、脚本の最初の部分は次のようになります。
---
- name: Set this playbook to run on the live server
hosts: webservers
remote_user: jon
become_method: su
become_user: root
roles:
- fetch-database
と役割の最初の仕事は、(これで始まります他のタスクがありますが、Anativesがクラッシュする前にクラッシュするので、関係ないと仮定します)。
---
- name: Install the MySQL packages to support MySQL exporting on the remote in Python
apt: name={{ item }} state=installed update_cache=yes
become: true
with_items:
- python-mysqldb
Ubuntuリモートサーバーにデータベースライブラリをインストールして、MySQLのダンプを実行してから、SQLファイルをローカルホストにフェッチすることができます。
私は私の地元のコンフィグansible.cfg
にthusly構成されたSSHドライバ、としてParamikoを使用しています:
[defaults]
transport=paramiko
残念ながら、私はこのエラーを取得する:
An exception occurred during task execution. The full traceback is:
Traceback (most recent call last):
File "/home/jon/Development/Personal/server-build/ansible/lib/ansible/executor/task_executor.py", line 96, in run
item_results = self._run_loop(items)
File "/home/jon/Development/Personal/server-build/ansible/lib/ansible/executor/task_executor.py", line 252, in _run_loop
res = self._execute(variables=task_vars)
File "/home/jon/Development/Personal/server-build/ansible/lib/ansible/executor/task_executor.py", line 447, in _execute
result = self._handler.run(task_vars=variables)
File "/home/jon/Development/Personal/server-build/ansible/lib/ansible/plugins/action/normal.py", line 33, in run
results = merge_hash(results, self._execute_module(tmp=tmp, task_vars=task_vars))
File "/home/jon/Development/Personal/server-build/ansible/lib/ansible/plugins/action/__init__.py", line 647, in _execute_module
res = self._low_level_execute_command(cmd, sudoable=sudoable, in_data=in_data)
File "/home/jon/Development/Personal/server-build/ansible/lib/ansible/plugins/action/__init__.py", line 721, in _low_level_execute_command
rc, stdout, stderr = self._connection.exec_command(cmd, in_data=in_data, sudoable=sudoable)
File "/home/jon/Development/Personal/server-build/ansible/lib/ansible/plugins/connection/paramiko_ssh.py", line 311, in exec_command
chan.sendall(self._play_context.become_pass + '\n')
File "/usr/lib/python2.7/dist-packages/paramiko/channel.py", line 797, in sendall
sent = self.send(s)
File "/usr/lib/python2.7/dist-packages/paramiko/channel.py", line 729, in send
m.add_string(s[:size])
File "/usr/lib/python2.7/dist-packages/paramiko/message.py", line 259, in add_string
self.packet.write(s)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 1: ordinal not in range(128)
fatal: [server.example.com]: FAILED! => {"failed": true, "msg": "Unexpected failure during module execution.", "stdout": ""}
私のrootパスワードが渡されているように見えますASCIIとして、それはポンド記号(£)で苦労しているようだ。私は、これが主なエラーだと思う必要があります:私は(それがうまく処理されていないので)、これはバグであることを推測
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 1: ordinal not in range(128)
が、私は誰が前にこれを発見していないことを想像することはできません。したがって、このパスワードをUTF-8に渡すオプションがあると仮定します。もしそうなら、どのようにすればいいのですか?
現在のdevel
ブランチは、GitHubからAnsible、ハッシュ46a97e1f551
というブランチを使用しています。それはPythonの問題かのように感じているので、
1d0d5db97a26fefc5ce462ef5fac84086122bbe3 lib/ansible/modules/core (heads/devel-165-g1d0d5db)
00b8b96906a741afa8eaa1245d0e229f099318a5 lib/ansible/modules/extras (heads/devel-116-g00b8b96)
私は、それはあまり重要想像していない:私は完全を期すため、彼らはあるので、次のようにこの問題は、使用中のサブモジュールによって影響を受けるであろうことを推測しますconfigの問題ですが、ローカルマシンとリモートマシンはどちらもUbuntu 14.04です。
AnabilitiesはかなりひどいUnicode処理(したがって3に大きなブレーク)を持つPython2上で動作していますので、これに対する回避策があれば驚くでしょう。おそらく、Githubの問題としてこれを上げるのが一番良いでしょう。 – ydaetskcoR
Alright @ydaetskcoR、私はそれを行うでしょう - ありがとう。奇妙なことに、私はParamikoでASCII以外のパスワード文字を使うのは初めてだとは思いません。私はUbuntu 14.04リポジトリのバージョンを使用していますので、おそらくそれは古いものです。 Pythonデポマネージャを使用してロードするのは簡単ですか?私はそれがピップだろうと思う? – halfer