powersell7

PowerShell 7 là một ngôn ngữ lập trình và vỏ đa năng. Bây giờ là đa nền tảng, hầu hết các quản trị viên hệ thống cần một cách để tự động triển khai ngôn ngữ cho nhiều hệ thống. Cuối cùng, Ansible là một hệ thống hoàn hảo để tạo ra các playbook dễ sử dụng để triển khai PowerShell 7 tới nhiều hệ thống có thể cần thiết.

Nếu bạn không quen thuộc với Ansible, đó là ngôn ngữ triển khai mà người ta có thể viết playbook để gửi một loạt lệnh tới các hệ thống và hướng dẫn họ cách làm. Không giống như nhiều hệ thống cấu hình khác, nó không yêu cầu một tác nhân trên hệ thống đích. Điều này làm cho nó dễ dàng để sử dụng và thiết lập.

Trong bài viết này, chúng ta sẽ khám phá cách tạo một Playbook Ansible đơn giản để cài đặt PowerShell 7 cho nhiều hệ thống.

Cài đặt Ansible trên Windows & Linux

Để cài đặt Ansible trên hệ thống Linux, rất dễ dàng. Hầu hết các hệ thống gói cho các bản phân phối Linux đều tích hợp sẵn. Một số cách phổ biến để cài đặt Ansible như sau:

  • sudo apt install ansible
  • sudo yum install ansible
  • sudo dnf install ansible

Windows là một trường hợp duy nhất, vì Ansible không có sẵn như là một gói Windows. Cách dễ nhất để cài đặt Ansible để sử dụng trên Windows là sử dụng Hệ thống con Windows cho Linux (WSL). Đây là một phiên bản ảo hóa của Linux chạy song song với Windows. Sau khi cài đặt xong, bạn có thể sử dụng các lệnh cài đặt tương tự trong WSL để cài đặt Ansible.

Thiết lập Ansible

Có một vài thành phần quan trọng mà chúng ta cần cài đặt PowerShell 7. Đáng chú ý, chúng ta cần một tệp máy chủ để xác định vị trí mục tiêu của mình. Có nhiều cách để thiết lập điều này, nhưng thông thường, một cấu trúc thư mục như dưới đây hoạt động tốt.

  • inventories
  • playbooks
  • vars

Trong inventoriesthư mục, chúng tôi sẽ tạo một hoststệp chứa tất cả các hệ thống mà chúng tôi muốn nhắm mục tiêu với Playbook của chúng tôi. Một tệp máy chủ đơn giản tạo ra một nhóm các máy chủ dưới productionthẻ được nêu bên dưới. Nhận xét rất hữu ích để cho bạn biết tên máy chủ thực tế của hệ thống là gì.

[production]
#test-system-01
100.100.10.10
#test-system-02
100.100.10.11
#test-system-03
100.100.10.12
#test-system-04
100.100.10.13

Bạn có thể tạo nhiều nhóm máy chủ lưu trữ và cùng một máy chủ có thể tồn tại trong nhiều nhóm. Điều này làm cho việc phân nhóm và gắn thẻ vào các máy chủ lưu trữ dễ dàng hơn để quản lý chúng sau này cho các vai trò phức tạp hơn.

Tạo Playbook của chúng tôi

Bây giờ chúng tôi có tệp lưu trữ của chúng tôi, chúng tôi có thể bắt đầu xây dựng playbook của chúng tôi. Để làm điều này, trước tiên hãy tạo một thư mục mới trong playbooksthư mục để chứa Playbook của chúng tôi. Trong trường hợp này, chúng tôi sẽ gọi nó deploy-powershell. Trong thư mục đó, chúng tôi sẽ tạo tập tin sau đây main.yml. Các main.ymltập tin là điểm nhập cảnh chính của chúng tôi cho playbook. Nó không nhất thiết phải được đặt tên main.ymlnhưng đó là quy ước chung.

---
- name: Install PowerShell 7
  hosts: all
  tasks:
	- name: Download and Add Powershell Key to Apt-Get Keyring
	  apt_key:
	    url: "https://packages.microsoft.com/keys/microsoft.asc"
	    state: present
	
	- name: Add Powershell Repository into /etc/apt/sources.list - Bionic
	  apt_repository:
	    repo: 'deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod bionic main'
	    state: present
	
	- name: Install Powershell
	  apt:
	    pkg: powershell
	    state: latest
	    force: yes

Mở rộng Playbook của chúng tôi cho các máy chủ khác

Ngay bây giờ Playbook của chúng tôi chỉ xử lý các hệ thống Ubuntu Linux. Để cập nhật điều này, chúng ta có thể sử dụng các điều kiện Ansible để làm cho điều này mạnh mẽ hơn một chút. Hãy mở rộng điều này để hỗ trợ các hệ thống Redhat Linux và Fedora.

Để cho phép hỗ trợ cho các hệ thống cài đặt gói khác, chúng tôi sử dụng whenmệnh đề điều kiện. Bằng cách đọc ansible_distributiongiá trị, chúng ta có thể yêu cầu Ansible chỉ nhắm mục tiêu các bản phân phối nhất định cho các lệnh cụ thể.

---
- name: Install PowerShell 7
  hosts: all
  tasks:
	- name: Download and Add Powershell Key to Apt-Get Keyring
	  apt_key:
	    url: "https://packages.microsoft.com/keys/microsoft.asc"
	    state: present
	
	- name: Add Powershell Repository into /etc/apt/sources.list - Ubuntu
	  apt_repository:
	    repo: 'deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod bionic main'
	    state: present
		when: ansible_distribution == 'Ubuntu'

	- name: Add repository - Fedora
	  yum_repository:
	    name: microsoft
	    description: Microsoft Repository
	    baseurl: "https://packages.microsoft.com/config/rhel/7/prod.repo"
		when: ansible_distribution == 'Fedora'

	- name: Add repository - RedHat
	  yum_repository:
	    name: microsoft
	    description: Microsoft Repository
	    baseurl: "https://packages.microsoft.com/config/rhel/7/prod.repo"
		when: ansible_distribution == 'RedHat'

	- name: Install Powershell Package
	  apt:
	    pkg: powershell
	    state: latest
	    force: yes
		when: ansible_distribution == 'Ubuntu'

	- name: Install the PowerShell Package
	  yum:
	    name: powershell
	    state: latest
		when: ansible_distribution == 'RedHat'

	- name: Install the PowerShell Package
	  dnf:
	    name: powershell
	    state: latest
		when: ansible_distribution == 'Fedora'

Chạy Playbook của chúng tôi

Playbook của chúng tôi đã được thiết lập, vì vậy hãy tiếp tục và thực sự cài đặt nó trên các hệ thống mà chúng tôi muốn. Để làm điều này, chúng tôi sẽ chạy dòng lệnh sau.

ansible-playbook /path/to/main.yml -i /path/to/hosts

Trong khi chạy này, chúng tôi sẽ nhận được kết quả của từng bước cho từng máy chủ lưu trữ mà playbook đang chạy và tỷ lệ thành công của chúng. Mỗi lệnh sẽ chạy trên mỗi hệ thống khi playbook chạy, điều này có nghĩa là mỗi lệnh cần hoàn thành trước khi chuyển sang lệnh tiếp theo. Ngoài ra, điều kiện whensẽ hiển thị dưới dạng bỏ qua trong kết quả.

Phần kết luận

Ansible giúp bạn dễ dàng cài đặt PowerShell trên nhiều hệ thống cùng một lúc. Khi PowerShell 7 được cài đặt trên các hệ thống đó, bạn có thể sử dụng Ansible để định cấu hình hệ vỏ để ghi nhật ký, truy cập từ xa và các khả năng khác để giúp việc di chuyển từ Windows PowerShell hoặc PowerShell Core sang PowerShell 7 hợp nhất mới dễ dàng hơn.

Để lại một bình luận