2015-04-19 14 views
14

Tôi đã cố gắng để Ansible cung cấp máy từ xa và tôi muốn máy từ xa được thiết lập với các khóa riêng và có khả năng sao chép kho git từ Bitbucket.Làm cách nào để sử dụng các khóa SSH của máy từ xa trong mô-đun git ansible

Người dùng được thiết lập, có id_rsa.pub riêng và khóa đã được đăng ký với bitbucket.

Nhưng, khi tôi sử dụng mô-đun Ansible Git, có vẻ như mô-đun luôn cố gắng sử dụng các phím từ máy chạy sách.

Làm cách nào để nhận mô-đun git sử dụng id_rsa.pub từ máy từ xa?

Nhiệm vụ liên quan là thế này:

- name: be sure prom-king has an up-to-date clone of its own repository 
    git: 
    repo: "ssh://[email protected]/prom-king.git" 
    dest: /home/promking/prom-king 
    accept_hostkey: yes 
    clone: yes 
    key_file: /home/promking/.ssh/id_rsa.pub 
    update: yes 

Việc kiểm kê có liên quan là này

# inventory file for use with the vagrant box in the testing directory. 
[prom-king] 
192.168.168.192 ansible_ssh_host=127.0.0.1 ansible_sudo=true ansible_connection=ssh ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=testing/.vagrant/machines/default/virtualbox/private_key 
+0

Quên đề cập đến ... Tôi có thể nhận được bản sao để làm việc với https (nhưng yêu cầu mật khẩu trong url, mà tôi muốn tránh) và khi bản sao đó được lấy ra, tất cả các tệp đều thuộc sở hữu của root trên máy từ xa - cũng không được mong muốn. – jschank

+0

Dán trong sách hướng dẫn bạn đang sử dụng. Nó có thể chỉ là git khi nó chạy trên máy từ xa, đang nhắc thêm bitbucket vào lời nhắc known_hosts (yes/no) mà nó luôn chạy khi nó chạy lần đầu tiên trên máy mới – Zasz

+0

Làm thế nào để bạn biết rằng git sử dụng khóa từ máy chơi sách của bạn? Tất cả các mô-đun ansible chạy trên máy từ xa trừ khi bạn chạy một cách rõ ràng trên 127.0.0.1 hoặc đánh dấu nó là local_action hoặc sử dụng ủy nhiệm. – Zasz

Trả lời

21

Đây là cách tôi triển khai từ Github sử dụng key file cài đặt trên máy chủ từ xa. Nếu tham số keyfile cho git không làm việc thì cái gì là sai với playbook của bạn:

- name: Creates .ssh directory for root 
    sudo: yes 
    file: path=/root/.ssh state=directory 

# This public key is set on Github repo Settings under "Deploy keys" 
- name: Upload the private key used for Github cloning 
    sudo: yes 
    copy: src=keys/github dest=/root/.ssh/github 

- name: Correct SSH deploy key permissions 
    sudo: yes 
    file: dest=/root/.ssh/github mode=0600 

- name: Deploy site files from Github repository 
    sudo: yes 
    git: 
    repo: [email protected]:miohtama/foobar.git 
    dest: /srv/django/foobar 
    key_file: /root/.ssh/github 
    accept_hostkey: yes 
    force: yes 
+4

Nó treo nếu khóa có cụm mật khẩu. – Suvitruf

+0

Một cách tiếp cận bằng cách sử dụng 'sudo' bây giờ sẽ hiển thị' [DEPRECATION WARNING]: Thay vì sudo/sudo_user, sử dụng trở thành/trở thành_user và chắc chắn rằng trở thành_method là 'sudo' (mặc định) '. – halfer

+1

Tôi đã tìm thấy rằng trao đổi 'sudo: yes' ở trên với' trở thành người dùng: root' hoạt động tốt cho tôi và loại bỏ thông báo không dùng nữa. Tôi đã thiết lập 'trở thành' và' trở thành_method' ở đầu sách. – halfer

8

Nếu tôi hiểu được điều này một cách chính xác, bạn làm - hoặc muốn - triển khai khóa riêng của bạn vào máy tính từ xa, do đó bạn có thể sao chép repo. Tôi tin rằng thay vào đó bạn nên sử dụng chuyển tiếp khóa. Trong .ssh/config thiết lập của bạn này:

ForwardAgent yes 

Hoặc nếu bạn muốn giới hạn này để Ansible bạn có thể định nghĩa nó trong ansible.cfg của bạn:

[ssh_connection] 
ssh_args= -A 
+0

Cảm ơn! Chỉ trong trường hợp, tôi nhận được một số thông điệp cảnh báo khó chịu bằng cách sử dụng 'ssh_args = -o ForwardAgent = yes' thay thế. – luvejo

Các vấn đề liên quan