Chrome Pointer

2023年8月24日 星期四

ansible指令教學

 

冒死上传(已被开除)!Ansible自动化运维+shell编程,入门到进阶一套就够了!


ansible和playbook和role运维实战教程


ansible指令選項 ·

-m:要執行的模塊,默認為command · 
-a:模塊的參數 · 
-u:ssh連接的用戶名,默認用root,
在ansible.cfg中可以配置module和action


ansible 主機組 -m shell -a "echo Hello World"

vim etc/ansible/hosts 更改裡面的IP PORT PASSPORT

[web]127.0.0.1 ansible_port=2222 ansible_passport="123123"127.0.0.2 ansible_port=2222 ansible_passport="123123"127.0.0.3 ansible_port=2222 ansible_passport="123123"
這樣子的改法很耗時間,需要每一個個別添加port和passport,
於是可以改成如下。

[web:vars]  #宣告一個公共變數ansible_port=2222 ansible_passport="123123"
[web] #繼承公共變數127.0.0.[1:3]   #代表127.0.0.1 ~127.0.0.3寫法


*****-m 模塊介紹*****

💛ping

ansible all -m ping 查看目標機器是否運行中~? all是代表查看全部的目標機器。

ansible all -m ping


💛command 

ansible 主機組 -m command -a "需要批量執行的命令"
此為默認模塊,若不輸入-m 就會自動使用command,
它是簡單的模塊,若需要複雜的命令則要使用shell模塊。
command不能跑特殊符號,例如"> ! < ?",但是shell模塊可以。

ansible web -m command -a "hostname" #遠程查看主機名稱
ansible web -m command -a "hostname" 相等於 ansible web -a "hostname" #遠程查看主機名稱

ansible web -a "free -m" #遠程查看主機內存

💛shell

等於你在linux上任何的難的命令都可以跑,包括特殊符號。
不過還是建議找尋專有的模塊來跑。


****playbook*****


[web1]   #hosts
127.0.0.1
127.0.0.2

[web2]   #hosts
127.0.0.3
127.0.0.4

開始撰寫 copy_hosts.yml 這個 playbook 內容看看:

  - hosts: web1   #需要部屬的host
    tasks:
    - name: copy_to_another hosts   #幫這個過程命名
      copy:   #指定模組為copy
        src: /etc/hosts
        dest: /etc/hosts

把檔案從本機端src複製到 [web1]下面的127.0.0.1,127.0.0.2的dest裡面。

ansible-playbook  copy_hosts.yml      #下指令 - 安裝ansible playbook裡面的文件





tasks : 裡面開始寫 要做的任務

name :代表每個動作的名稱 這個是可以自己命名的

yum, copy, service :各個-m模塊名稱,你也可以寫其他模塊module,
像是command或shell,但要記得縮行~



TASK[install]
TASK[configure]
TASK[qidong]
#上面這些都是你在name輸入命名的

如果黃字代表RUN成功且有更改
綠字代表RUN成功,但沒有更動


透過 Groups of Groups 達到更複雜的組合 
將多個 Group 再組合成另一個 Groups of Groups。 

下面的範例中,只要在執行 playbook 時,
hosts 指定 ubuntu1404,即可在 vm1 ~ vm4 每一台都運行
因為 web 與 db 這兩個 Group 都屬於 ubuntu 這個 Groups of Groups。

[ubuntu1404:children]
web
db

[web]
vm1
vm2

[db]
vm3
vm4







2023年8月21日 星期一

wsl 不能使用vi/vim解決方法

You don't have any WSL 2 distros installed. Please convert a WSL 1 distro to WSL 2, or install a new distro and it will appear here. 

會發生這個問題是因為你的Docker和Ubuntu沒有連接在一起,

理論上你的Ubuntu應該就會有vi/vim了~

你必須要整合ubuntu才能直接在powershell使用ubuntu的terminal,


wsl.exe -l -v

NAME                   STATE           VERSION

* Ubuntu                 Stopped         1

  docker-desktop-data    Running         2

  docker-desktop         Running         2


wsl.exe --set-version Ubuntu  2

有關 WSL 2 的主要差異詳細資訊,請瀏覽 https://aka.ms/wsl2

轉換進行中,這可能需要幾分鐘的時間。

操作順利完成。


wsl.exe -l -v

  NAME                   STATE           VERSION

* Ubuntu                 Running         2

  docker-desktop-data    Running         2

  docker-desktop         Running         2


Select from your installed WSL 2 distributions which you want to enable Docker integration on by going to: Settings > Resources > WSL Integration.


理論上做到這裡就可以intergrate了!!

Hyper-V記得要勾起來~~


之後直接在cmd裡面輸入wsl就會進入ubuntu裡面~
wsl

在ubuntu裡面就可以使用vi指令了~~

2023年8月20日 星期日

Windows wsl --install錯誤解決方法

WSL (Windows Subsystem for Linux),

根據Window官網https://learn.microsoft.com/zh-tw/windows/wsl/install,

安裝wsl的話,需要在cmd或shell下以下指令,

wsl --install

但是下完指令後並沒有開始安裝,

而是出現以下字樣。

著作權 (c) Microsoft Corporation。保留擁有權利。

使用方式: wsl.exe [Argument] [Options...] [CommandLine]

用於執行 Linux 二進位檔的引數:

    如果未提供任何命令列,wsl.exe 會啟動預設的 shell。

    --exec,-e <CommandLine>
        執行指定的命令而不使用預設的 Linux shell。

    --
        依原樣傳遞剩餘的命令列。

選項:
    --cd <Directory>
        將指定的目錄設定為目前的工作目錄。
        如果使用 ~,則會使用 Linux 使用者的主目錄路徑。如果路徑開始
        為 / 字元,它將會被視為絕對的 Linux 路徑。
        否則,該值必須是絕對 Windows 路徑。

    --發佈,-d <Distro>
        執行指定的發佈。

    --使用者,-u <UserName>
        以指定使用者的身份執行。

用於管理適用於 Linux 的 Windows 子系統的引數:

    --說明
        顯示使用狀況資訊。

    --install [Options]
        安裝其他 Windows 子系統 Linux 版發佈。
        如需有效發佈的清單,請使用 'wsl --list --online'。

        選項:
            --distribution, -d [Argument]
                依名稱下載並安裝發佈。

                引數:
                    有效發佈名稱 (不區分大小寫)。

                範例:
                    wsl --install -d Ubuntu
                    wsl --install --distribution Debian

    --set-default-version <Version>
        針對新發佈變更預設安裝版本。

    --shutdown
        立即終止所有執行中的發佈和 WSL 2
        輕量公用程式虛擬機器。

    --status
        顯示 Windows 子系統 Linux 版狀態。

    --update [Options]
        如果未指定選項,則會更新 WSL 2 核心
        至最新版本。

        選項:
            --rollback
                還原至舊版 WSL 2 核心。

            --inbox
                僅需更新收件匣 WSL 2 核心。請勿從 Microsoft Store 安裝 WSL。

            --web-download
                從網際網路上下載最新版本的 WSL,而不是從 Microsoft Store 上下載。

 在 Windows 子系統 Linux 版中用於管理發佈的引數:

    --export <Distro> <FileName>
        將發佈匯出為 tar 檔案。
        檔案名稱可以是 - 以用於標準輸出。

    --import <Distro> <InstallLocation> <FileName> [Options]
        匯入指定的 tar 檔案作為新發佈。
        檔案名稱可以是 - 以用於標準輸入。

        選項:
            --version <Version>
                指定要用於新發佈的版本。

    --list, -l [Options]
        列出發佈。

        選項:
            --all
                列出全部發佈,包含
                正在安裝或解除安裝的發佈。

            --running
                只列出目前正在執行的發佈。

            --quiet, -q
                只顯示發佈名稱。

            --verbose, -v
                顯示所有發佈的詳細資訊。

            --online, -o
                顯示可用發佈的清單,以使用 'wsl --install' 安裝。

    --set-default, -s <Distro>
        將發佈設定為預設值。

    --set-version <Distro> <Version>
        變更所指定發佈的版本。

    --terminate, -t <Distro>
        終止指定的發佈。

    --unregister <Distro>
        取消登錄發佈並刪除根檔案系統。

這個時候,

可以查看可用的散發版本清單並執行 wsl --install -d <DistroName> 以安裝散發版本。

崴少的解決方法是使用以下指令~
wsl --install -d Ubuntu
下了這個指令後就可以成功下載了!!


C:\Windows\system32>wsl --install -d Ubuntu
正在安裝:Ubuntu
已完成安裝 Ubuntu。
正在啟動 Ubuntu...

C:\Windows\system32>wsl --update
正在安裝:Windows 子系統 Linux 版
已完成安裝 Windows 子系統 Linux 版。

C:\Windows\system32>wsl --shutdown

C:\Windows\system32>wsl --status
預設發佈: Ubuntu
預設版本: 2

之後若想要啟動linux,
可以直接在cmd裡面輸入wsl就會進入linux裡面~
wsl

也可以直接在windows左下的搜尋欄裡面輸入ubuntu,
就可以進入terminal裡面了