主頁 > 作業系統 > ansible組態檔

ansible組態檔

2022-10-21 06:58:04 作業系統

Ansible組態檔

目錄
  • Ansible組態檔
    • 一、ansible組態檔
      • 1.配置ansible
      • 2.組態檔優先級
      • 3.管理組態檔中的設定
      • 4.配置連接
        • 4.1連接設定
        • 4.2升級特權
      • 5.組態檔注釋
    • 二、構建ansible清單
      • 1.定義清單
      • 2.清單存放位置
      • 3.使用靜態清單指定受管主機
      • 4.驗證清單
      • 5.構建Ansible清單
      • 6.自定義清單檔案
    • 三、運行臨時命令
      • 1.使用臨時命令通過模塊來執行任務
      • 2.在受管主機上運行任意命令

一、ansible組態檔

1.配置ansible

可以通過修改 Ansible 組態檔中的設定來自定義 Ansible安裝的行為,
Ansible從控制節點上多個可能的位置之一選擇其組態檔,

使用/etc/ansible/ansible.cfg
ansible軟體包提供一個基本的組態檔,它位于/etc/ansible/ansible.cfg,如果找不到其他組態檔,則使用此檔案,

使用~/.ansible.cfg
Ansible在用戶的家目錄中查找.ansible.cfg檔案,如果存在此組態檔并且當前作業目錄中也沒有ansible.cfg檔案,則使用此配置取代/etc/ansible/ansible.cfg

使用./ansible.cfg
如果執行ansible命令的目錄中存在ansible.cfg檔案,則使用它,而不使用全域檔案或用戶的個人檔案,這樣,管理員可以創建一種目錄結構,將不同的環境或專案存盤在單獨的目錄中,并且每個目錄包含為獨特的一組設定而定制的組態檔,

推薦的做法是在需要運行Ansible命令的目錄中創建ansible.cfg檔案,此目錄中也將包含任何供Ansible專案使用的檔案,如清單和playbook,這是用于Ansible組態檔的最常用位置,實踐中不常使用~/.ansible.cfg/etc/ansible/ansible.cfg檔案

使用ANSIBLE_CONFIG環境變數
我們可以通過將不同的組態檔放在不同的目錄中,然后從適當的目錄執行Ansible命令,以此利用組態檔,但是,隨著組態檔數量的增加,這種方法存在局限性并且難以管理,有一個更加靈活的選項,即通過ANSIBLE_CONFIG環境變數定義組態檔的位置,定義了此變數時,Ansible將使用變數所指定的組態檔,而不用上面提到的任何組態檔,

2.組態檔優先級

ansible的組態檔名為ansible.cfg,默認會在四個地方(根據高/低優先級排序——從1到4):

  1. ANSIBLE_CONFIG:Ansible命令會優先檢查該環境變數以及這個環境變數指向的組態檔
    Export 環境變數:設定環境變數
    Unset 環境變數: 取消環境變數
  2. ./ansible.cfg:當前作業目錄,即當前執行ansible指令的目錄,如果ANSIBEL_CONFIG環境變數(上一優先級組態檔)未定義,則優先使用該組態檔
  3. ~/.ansible.cfg:用戶家目錄下的隱藏檔案,若當前作業目錄下不存在ansible.cfg組態檔(上一優先級目錄中的檔案),則會查找用戶家目錄下的該隱藏檔案
  4. /etc/ansible/ansible.cfg:默認組態檔,如果上面兩個路徑下的ansible.cfg都不存在,則使用該檔案

由于Ansible組態檔可以放入的位置有多種,因此Ansible當前使用哪一個組態檔可能會令人困惑,我們可以運行以下命令來清楚地確認所安裝的Ansible版本以及正在使用的組態檔,

[root@localhost ~]# ansible --version
ansible 2.9.6
  config file = /etc/ansible/ansible.cfg
...........

Ansible僅使用具有最高優先級的組態檔中的設定,即使存在優先級較低的其他組態檔,其設定也會被忽略,不會與選定組態檔中的設定結合,因此,如果你選擇自行創建組態檔來取代全域/etc/ansible/ansible.cfg組態檔,就需要將該檔案中所有需要的設定復制到自己的用戶級組態檔中,用戶組組態檔中未定義的設定將保持設為內置默認值,即使已在全域組態檔中設為某個其他值也是如此,

3.管理組態檔中的設定

Ansible組態檔由幾個部分組成,每一部分含有以鍵值對形式定義的設定,部分的標題以中括號括起來,對于基本操作,請使用以下兩部分:

  • [defaults]部分設定Ansible操作的默認值
  • [privilege_escalation]配置Ansible如何在受管主機上執行特權升級

例如,下面是典型的ansible.cfg檔案:

[defaults]
inventory = ./inventory
remote_user = user
ask_pass = false

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false

下表說明了此檔案中的指令:
Ansible配置

指令 描述
inventory 指定清單檔案的路徑,
remote_user 要在受管主機上登錄的用戶名,如果未指定則使用當前用戶名
ask_pass 是否提示輸入SSH密碼,如果使用SSH公鑰身份驗證則可以是false
become 連接后是否自動在受管主機上切換用戶(通常切換為root) 這也可以通過play來指定,
become_method 如何切換用戶(通常為sudo,這也是默認設定,但可選擇su)
become_user 要在受管主機上切換到的用戶(通常是root,這也是默認值)
become_ask_pass 是否需要為become_method提示輸入密碼,默認為false,

4.配置連接

Ansible需要知道如何與其受管主機通信,更改組態檔的一個最常見原因是為了控制Ansible使用什么方法和用戶來管理受管主機,需要的一些資訊包括:

  • 列出受管主機和主機組的清單的位置
  • 要使用哪一種連接協議來與受管主機通信(默認為SSH),以及是否需要非標準網路埠來連接服務器
  • 要在受管主機上使用哪一遠程用戶;這可以是root用戶或者某一非特權用戶
  • 如果遠程用戶為非特權用戶,Ansible需要知道它是否應嘗試將特權升級為root以及如何進行升級(例如,通過sudo)
  • 是否提示輸入SSH密碼或sudo密碼以進行登錄或獲取特權

4.1連接設定

默認情況下,Ansible使用SSH協議連接受管主機,控制Ansible如何連接受管主機的最重要引數在[defaults]部分中設定,

默認情況下,Ansible嘗試連接受管主機時使用的用戶名與運行ansible命令的本地用戶相同,若要指定不同的遠程用戶,請將remote_user引數設定為該用戶名,

如果為運行Ansible的本地用戶配置了SSH私鑰,使得它們能夠在受管主機上進行遠程用戶的身份驗證,則Ansible將自動登錄,如果不是這種情況,可以通過設定指令ask_pass = true,將Ansible配置為提示本地用戶輸入由遠程用戶使用的密碼,

【defaults]
inventory = ./inventory

remote_user = root
ask_pass = true

假設在使用一個Linux控制節點,并對受管主機使用OpenSSH,如果可以使用密碼以遠程用戶身份登錄,那么我們可以設定基于SSH密鑰的身份驗證,從而能夠設定ask_pass = false

第一步是確保在~/.ssh中為控制節點上的用戶配置了SSH密鑰對,并且使用ssh-copy-id命令將本地的公鑰復制到受管主機中,

[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:7yO2BD/BEu9k/IHVA6P+ttx6OnjfxedM4AbHJLh7W3w [email protected]
The key's randomart image is:
+---[RSA 3072]----+
|          o      |
|         . =     |
|      . . o + .  |
|       * o . =   |
|      o S o . +  |
|       B = o = o |
|        =.* . = E|
|       .+=++.= *.|
|       ..+*B+ . o|
+----[SHA256]-----+
[root@localhost ~]# ssh-copy-id -i ./.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "./.ssh/id_rsa.pub"
The authenticity of host '192.168.111.142 (192.168.111.142)' can't be established.
ECDSA key fingerprint is SHA256:ihTF+QdYwS+/XcImxzGkKP1w2QFfOkfCl+AI91A/g4Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

4.2升級特權

鑒于安全性和審計原因,Ansible可能需要先以非特權用戶身份連接遠程主機,然后再通過特權升級獲得root用戶身份的管理權限,這可以在Ansible組態檔的[privilege_escalation]部分中設定,

要默認啟用特權升級,可以在組態檔中設定指令become = true,即使默認為該設定,也可以在運行臨時命令或Ansible Playbook時通過各種方式覆寫它,(例如,有時候可能要運行一些不需要特權升級的任務或play,)

become_method指令指定如何升級特權,有多個選項可用,但默認為使用sudo,類似地,become_user指令指定要升級到的用戶,但默認為root,

如果所選的become_method機制要求用戶輸入密碼才能升級特權,可以在組態檔中設定become_ask_pass = true指令,

以下示例ansible.cfg檔案假設你可以通過基于SSH密鑰的身份驗證以someuser用戶身份連接受管主機,并且someuser可以使用sudo以root用戶身份運行命令而不必輸入密碼:

[defaults]
inventory = ./inventory
remote_user = someuser
ask_pass = false

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false

5.組態檔注釋

Ansible組態檔允許使用兩種注釋字符:井號或分號,

位于行開頭的#號會注釋掉整行,它不能和指令位于同一行中,

分號字符可以注釋掉所在行中其右側的所有內容,它可以和指令位于同一行中,只要該指令在其左側,

二、構建ansible清單

1.定義清單

清單定義Ansible將要管理的一批主機,這些主機也可以分配到組中,以進行集中管理,組可以包含子組,主機也可以是多個組的成員,清單還可以設定應用到它所定義的主機和組的變數,

可以通過兩種方式定義主機清單,靜態主機清單可以通過文本檔案定義,動態主機清單可以根據需要使用外部資訊提供程式通過腳本或其他程式來生成,

2.清單存放位置

在[defaults]部分中,inventory指令可以直接指向某一靜態清單檔案,或者指向含有多個靜態清單檔案和動態清單腳本的某一目錄,

[defaults]
inventory = ./inventory

3.使用靜態清單指定受管主機

靜態清單檔案是指定Ansible目標受管主機的文本檔案,可以使用多種不同的格式撰寫此檔案,包括INI樣式或YAML,一般默認使用的INI模式

在最簡單的形式中,INI樣式的靜態清單檔案是受管主機的主機名或IP地址的串列,每行一個:

組態檔位置為:/etc/ansible/hosts

192.168.111.142
192.168.111.143
web1

但通常而言,可以將受管主機組織為主機組,通過主機組,可以更加有效的對一系列系統運行Ansible,這時,每一部分的開頭為以中括號括起來的主機組名稱,其后為該組中每一受管主機的主機名或IP地址,每行一個,

web1

[webservers]
192.168.111.142

[dbservers]
192.168.111.143

4.驗證清單

若有疑問,可使用 ansible 命令驗證計算機是否存在于清單中:

ansible [主機名/IP] --list-hosts
[root@localhost ~]# ansible web1 --list-hosts
  hosts (1):
    web1

//不存在清單中
[root@localhost ~]# ansible web111111111 --list-hosts
[WARNING]: Could not match supplied host pattern, ignoring: web111111111
[WARNING]: No hosts matched, nothing to do
  hosts (0):

運行以下命令來列出指定組中的所有主機:

ansible [組名稱] --list-hosts
[root@localhost ~]# ansible webservers --list-hosts
  hosts (1):
    192.168.111.142

如果清單中含有名稱相同的主機和主機組,ansible 命令將顯示警告并以主機作為其目標,主機組則被忽略,

應對這種情況的方法有多種,其中最簡單的是確保主機組不使用與清單中主機相同的名稱,

5.構建Ansible清單

清單內容:

web1

[webservers]
192.168.111.142

[dbservers]
192.168.111.143

使用以下命令列出默認清單檔案中的所有受管主機:

[root@localhost ~]# ansible all --list-hosts
  hosts (3):
    web1
    192.168.111.142
    192.168.111.143

使用以下命令列出不屬于任何組的受管主機:

[root@localhost ~]# ansible ungrouped --list-hosts
  hosts (1):
    web1

使用以下命令列出屬于某組的受管主機:

[root@localhost ~]# ansible dbservers --list-hosts
  hosts (1):
    192.168.111.143

6.自定義清單檔案

在清單的位置中已經創建一個名為inventory的自定義靜態清單檔案,

服務器清單規格

主機IP 用途 位置 運行環境
192.168.111.142 web服務器 武漢 測驗
192.168.111.143 web服務器 武漢 生產

編輯/etc/ansible/inventory檔案,將上表中所列出的主機加入受管主機序列,

[root@localhost ~]# vim /etc/ansible/ansible.cfg
inventory      = /etc/ansible/inventory			//自定義清單存放位置
[root@localhost ~]# vim /etc/ansible/inventory
[test1]
192.168.111.142 ansible_user=root ansible_password=1	//密碼寫在組態檔中容易泄露最好別寫

[produce]
192.168.111.143

執行以下命令列出所有受管主機:

[root@localhost ~]# ansible all -i /etc/ansible/inventory --list-hosts
  hosts (2):
    192.168.111.142
    192.168.111.143

執行以下命令列出webservers組中的所有受管主機:

[root@localhost ~]# ansible test1 -i /etc/ansible/inventory --list-hosts
  hosts (1):
    192.168.111.142

三、運行臨時命令

Ansible運行臨時命令的語法如下:

ansible host-pattern -m module [-a 'module arguments'] [-i inventory]

host-pattern引數用于指定在其上運行臨時命令的受管主機,它可以是清單中的特定受管主機或主機組,也可以用后面的-i選項指定特定的清單而不使用默認清單,

-m選項將Ansible應在目標主機上運行的module名稱作為引數,模塊是為了實施任務而執行的小程式,一些模塊不需要額外的資訊,但其他模塊需要使用額外的引數來指定其操作詳情,-a選項以帶引號字串形式取這些引數的串列,

一種最簡單的臨時命令使用ping模塊,此模塊不執行ICMP ping,而是檢查能否在受管主機上運行基于Python的模塊,例如,以下臨時命令確定清單中的所有受管主機能否運行標準的模塊:

[root@localhost ~]# ansible all -m ping
192.168.111.143 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.111.142 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

1.使用臨時命令通過模塊來執行任務

模塊是臨時命令用于完成任務的工具,Ansible提供了數百個能夠完成不同任務的模塊,通常我們可以查找一個經過測驗的專用模塊,作為標準安裝的一部分來完成所需的任務,

ansible-doc -l命令可以列出系統上安裝的所有模塊

可以使用ansible-doc來按照名稱查看特定模塊的幫助檔案,再查找關于模塊將取什么引數作為選項的資訊,

例如以下命令顯示ping模塊的幫助檔案,在幫助檔案里面輸入q命令表示退出:

ansible-doc ping

更多的模塊資訊請訪問在線Ansible檔案,網址:

Index of all Modules — Ansible Documentation

Ansible常用模塊

模塊類別 模塊
檔案模塊 copy:將本地檔案復制到受管主機 file:設定檔案的權限和其他屬性 lineinfile:確保特定行是否在檔案中 synchronize:使用rsync同步內容
軟體包模塊 package:使用作業系統本機的自動檢測軟體包管理器管理軟體包 yum:使用yum管理軟體包 apt:使用APT管理軟體包 dnf:使用dnf管理軟體包 gem:管理Ruby gem pip:從PyPI管理Python軟體包
系統模塊 firewalld:使用firewalld管理防火墻 reboot:重啟計算機 service:管理服務 user:添加、洗掉和管理用戶帳戶
Net Tools模塊 get_url:通過HTTP、HTTPS或FTP下載檔案 nmcli:管理網路 uri:與Web服務互動

大部分模塊會取用引數,可在模塊的檔案中找到可用于該模塊的引數串列,臨時命令可以通過-a選項向模塊傳遞引數,無需引數時,可從臨時命令中省略-a選項,如果需要指定多個引數,請以引號括起的空格分隔串列形式提供,

例如,以下臨時命令使用user模塊來確保runtime用戶存在于192.168.111.142上并且其UID為4000:

[root@localhost ~]# ansible 192.168.111.142 -m user -a 'name=runtime uid=4000 state=present'
192.168.111.142 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "comment": "",
    "create_home": true,
    "group": 4000,
    "home": "/home/runtime",
    "name": "runtime",
    "shell": "/bin/bash",
    "state": "present",
    "system": false,
    "uid": 4000
}
[root@localhost ~]# ansible 192.168.111.142 -a 'id runtime'
192.168.111.142 | CHANGED | rc=0 >>
uid=4000(runtime) gid=4000(runtime) groups=4000(runtime)

大多數模塊為idempotent,這表示它們可以安全地多次運行;如果系統已處于正確的狀態,它們不會進行任何操作,

2.在受管主機上運行任意命令

command模塊允許管理員在受管主機的命令列中運行任意命令,要運行的命令通過-a選項指定為該模塊的引數,例如,以下命令將對webservers組的受管主機運行hostname命令:

[root@localhost ~]# ansible test1 -m command -a 'hostname'
192.168.111.142 | CHANGED | rc=0 >>
LNMP

這條命令為每個受管主機回傳兩行輸出,第一行是狀態報告,顯示對其運行臨時操作的受管主機名稱及操作的結果,第二行是使用Ansible command模塊遠程執行的命令的輸出,

若要改善臨時命令輸出的可讀性和決議,管理員可能會發現使對受管主機執行的每一項操作具有單行輸出十分有用,使用-o選項以單行格式顯示Ansible臨時命令的輸出,

[root@localhost ~]# ansible test1 -m command -a 'hostname' -o
192.168.111.142 | CHANGED | rc=0 | (stdout) LNMP

command模塊允許管理員對受管主機快速執行遠程命令,這些命令不是由受管主機上的shell加以處理,因此,它們無法訪問shell環境變數,也不能執行重定向和管道等shell操作,

在命令需要shell處理的情形中,管理員可以使用shell模塊,與command模塊類似,可以在臨時命令中將要執行的命令作為引數傳遞給該模塊,Ansible隨后對受管主機遠程執行該命令,與command模塊不同的是,這些命令將通過受管主機上的shell進行處理,因此,可以訪問shell環境變數,也可以使用重定向和管道等操作,

以下示例演示了command與shell的區別,如果嘗試使用這兩個模塊執行內建的Bash命令set,只有使用shell模塊才會成功:

[root@localhost ~]# ansible 192.168.111.143 -m command -a 'set'
192.168.111.143 | FAILED | rc=2 >>
[Errno 2] No such file or directory: b'set': b'set'
[root@localhost ~]# ansible 192.168.111.143 -m shell -a 'set'
192.168.111.143 | CHANGED | rc=0 >>
BASH=/bin/sh
BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_EXECUTION_STRING=set
...............
TERM=xterm
UID=0
USER=root
XDG_RUNTIME_DIR=/run/user/0
XDG_SESSION_ID=6
_=/usr/libexec/platform-python
which_declare='declare -f'

command和shell模塊都要求受管主機上安裝正常作業的Python,第三個模塊是raw,它可以繞過模塊子系統,直接使用遠程shell運行命令,在管理無法安裝Python的系統(如網路路由器)時,可以利用這個模塊,它也可以用于將Python安裝到主機上,

在大多數情況下,建議避免使用command、shell和raw這三個“運行命令”模塊,

其他模塊大部分都是冪等的,可以自動進行更改跟蹤,它們可以測驗系統的狀態,在這些系統已處于正確狀態時不執行任何操作,相反,以冪等方式使用“運行命令”模塊要復雜得多,依靠它們,你更難以確信再次運行臨時命令或playbook不會造成意外的失敗,當shell或command模塊運行時,通常會基于它是否認為影響了計算機狀態而報告CHANGED狀態,

有時候,“運行命令”模塊是有用的工具,也是解決問題的好辦法,如果確實需要使用它們,可能最好先嘗試用command模塊,只有在需要shell或raw模塊的特殊功能時才利用它們,

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/518689.html

標籤:其他

上一篇:三種常見的存盤型別

下一篇:linux-磁盤io監控相關工具整理

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more