Header Ads Widget

Ticker

6/recent/ticker-posts

Ansible Phần 2: Thêm user cho máy thực thi và build app đơn giản

Ở phần 1 mình đã giới thiệu các bạn về biến, về Loops, về Playbook v.v hôm nay ta bắt đầu thực hiện cao hơn xíu áp dụng những cái đó vào playbook để build cài nhiều App cùng lúc trên nhiều server, nhưng trước mắt mình sẻ hướng dẫn các bạn add thêm 1 user cho các máy server
ở phần này mình sẻ chỉ các bạn thêm user cho máy server và truyền ssh vào trong các user này, để không yêu cầu password như phần 1, chú ý các user được tạo ở đây chỉ có thể ssh và không thể nào connect được do bị disable, ok bắt đầu với việc tạo keygen trên máy Ansible
ssh-keygen -t ed25519 -C "MySSHKey"
Sau khi chạy câu lệnh ta cũng sẻ có 2 file như phần 1, nếu các bạn đã thực hiện bước tạo keygen ở phần 1 rồi thì việc này là không cần thiết tiếp đến tạo 1 file adduser.yml và code đoạn mã này vào nên nhớ mọi dấu cách chỉ cần sai thôi là nó sẻ báo lỗi liền ví dụ một số lỗi
Trên là lỗi khi bạn sai 1 con tab hoặc dấu phẩy nên hảy cẩn trọng
---
- hosts: lanhosts
  remote_user: root
  tasks:
    - name: Tao mot user moi cho may thuc thi
      user:
        name: ThanhPhatIT
        comment: "ThanhPhat IT"
        shell: /bin/bash
        groups: sudo
        append: yes
        password: '*'           
    - name: Upload key ssh cho may thuc thi ta co the truy cap vao ma ko can pass nhung user thi bi disable
      authorized_key:
        user: ubuntu
        state: present
        manage_dir: yes
        key: "{{ lookup('file', '/home/ubuntu/.ssh/id_ed25519.pub') }}"
Bạn chép đoạn code phía trên bỏ vào file playbook adduser.yml thực hiện build playbook adduser.yml bằng câu lệnh
ansible-playbook -i inventory --ask-vault-pass --extra-vars '@passwords.yml' adduser.yml

Lỗi này nghĩa là không thể connect ssh đến máy server điều này ta nên kiểm tra lại bằng cách ssh đến máy server xem có yêu cầu password không nếu nó yêu cầu nghĩa là bạn đã setup sai phần tạo keygen và copy keygen nên kiểm tra lại cho 2 máy phải connect với nhau và không yêu cầu password
Lỗi ở trên nghĩa là password với quyền sudo trong file inventory của bạn đã sai, nghĩa là sao, nghĩa là lúc đầu bạn có tạo 1 file password.yml để lưu pass của tài khoản bên máy server nhưng bạn nhập giá trị password trong file đó sai nên khiến connect đến file inventory sai dẫn đến thông báo incorrect sudo password
Tại sao lại có lỗi này, đó là lỗi khi bạn quên bỏ dòng lệnh
my_user_password: điền password root của máy server
Trong file passwords.yml sau khi mọi thông báo lỗi đã hết ta thử test bằng câu lệnh update cho máy server bên kia
ansible -i inventory --ask-vault-pass --extra-vars '@passwords.yml' lanhosts -m shell -a "apt-get update"
cuối cùng ta thực hiện câu lệnh build file adduser.yml
ansible-playbook -i inventory --ask-vault-pass --extra-vars '@passwords.yml' adduser.yml
Đã hoàn thành xong bước tạo 1 user cho máy server bây giờ đến việc tạo thử thêm và xóa một gói packages cho máy server tạo một file software.yml và điền đoạn mã này vào
---
- hosts: lanhosts
  tasks:
          - name: Them danh sach app
            apt:
              name: "{{ packages }}"
              state: present
            vars:
              packages:
                - vim
                - nginx
          - name: Xoa danh sach app
            apt:
              name: "{{ packages }}"
              state: absent
            vars:
              packages:
                - vim
                - nano
Sau đó ta dùng dòng lệnh này để build và xem kết quả ở máy server có cài vim và nginx không và có xóa vim và nano không nhé
ansible-playbook -i inventory --ask-vault-pass --extra-vars '@passwords.yml' software.yml
Ok như vậy hôm nay mình đã hướng dẫn các bạn cơ bản về việc auto cài đặt nhiều máy server cùng lúc với 1 dòng lệnh bằng Ansible đừng quên Share và theo dõi Blog nhé

Post a Comment

0 Comments