우리는 프로젝트에서 사용하고있는 Terraform의 공통 공유 버전을 설치하기 위해 Travis-CI로부터 2.2.0.0을 실행할 수 있습니다.인자는 바이트가 아님 str은 바이트가 아님
나는 문제없이 로컬로 실행할 수 있습니다,하지만 난 트래비스에서 실행할 때,이 변수에서 공급하는 문자열의 일부 인코딩에 실패 할 것 같다
[WARNING]: Host file not found: /etc/ansible/hosts
[WARNING]: provided hosts list is empty, only localhost is available
PLAY [localhost] ***************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [terraform : create terraform directory] **********************************
changed: [localhost]
TASK [terraform : install terraform] *******************************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Failure downloading https://releases.hashicorp.com/terraform/0.7.13/terraform_0.7.13_linux_amd64.zip, write() argument must be str, not bytes"}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=1
호스트 Ansible 파이썬 버전 :
[email protected]:/vagrant/ansible$ python3 --version
Python 3.4.3
[email protected]:/vagrant/ansible$ ansible --version
ansible 2.2.0.0
config file = /vagrant/ansible/ansible.cfg
configured module search path = Default w/o overrides
트래비스 Ansible 파이썬 버전 : 나는 01,239 것을 확인했다
$ python --version
Python 3.4.2
$ ansible --version
ansible 2.2.0.0
config file =
configured module search path = Default w/o overrides
은 두 위치 모두에서 en_US.UTF-8
입니다. 여기
---
- hosts: localhost
roles:
- role: terraform
terraform_install_root: "{{ ansible_env.HOME }}/terraform/"
bin_dir: "{{ ansible_env.HOME }}/.local/bin"
가 roles/terraform/tasks/main.yml
입니다 : 여기
---
- name: create terraform directory
file: path={{ terraform_install_root }}/{{ terraform_version }} state=directory
- name: install terraform
unarchive:
copy: no
src: "https://releases.hashicorp.com/terraform/{{ terraform_version }}/terraform_{{ terraform_version }}_linux_amd64.zip"
dest: "{{ terraform_install_root }}/{{ terraform_version }}"
creates: "{{ terraform_install_root }}/{{ terraform_version }}/terraform"
- name: ensure bin directory exists
file: path={{ bin_dir }} state=directory
- name: create terraform symlink
file: src={{ terraform_install_root }}/{{ terraform_version }}/terraform dest={{ bin_dir }}/terraform state=link
가 roles/terraform/vars/main.yml
입니다 :
---
terraform_version: "0.7.13"
terraform_install_root: /opt/terraform/
bin_dir: /usr/local/bin
그것은 어떤 이유로, Ansible 변환하지 못하는 것 같습니다 여기
내 작전이다 뭔가를하지 않고 있어도 UTF-8로 변환 할 수 있습니다. nge, 그리고 정확히 로컬에서 실행되는 것은 이 아니고 트래비스에서 실행되는이 아닙니다.$ file -i ansible/roles/terraform/tasks/main.yml
ansible/roles/terraform/tasks/main.yml: text/plain; charset=us-ascii
$ file -i ansible/roles/terraform/vars/main.yml
ansible/roles/terraform/vars/main.yml: text/plain; charset=us-ascii
$ file -i ansible/travis-playbook.yml
ansible/travis-playbook.yml: text/plain; charset=us-ascii
어떤 아이디어 :
또한, 이러한 파일에는 비 ASCII 문자가 없음을 나타 납니까?
오류 메시지는 사용자가 주장한 것의 * 반대 *이며, 문자열은 유니 코드 문자열이어야하며 UTF-8로 인코딩 된 바이트가 아니어야합니다. –
@MarkRansom 티켓을 업데이트했습니다. 파일에 비 ASCII 문자가 없습니다. –
비 ASCII가 중요하지 않습니다. 어딘가에 디코드가 누락되거나 별도의 인코딩이 필요합니다. –