主頁 >  其他 > 《Ansible自動化運維:技術與最佳實踐》第三章讀書筆記

《Ansible自動化運維:技術與最佳實踐》第三章讀書筆記

2020-09-11 18:38:36 其他

Ansible 組件介紹

本章主要通過對 Ansible 經常使用的組件進行講解,使對 Ansible 有一個更全面的了解,主要包含以下內容:

  1. Ansible Inventory
  2. Ansible Ad-Hoc 命令
  3. Ansible playbook
  4. Ansible facts
  5. Ansible role
  6. Ansible Galaxy

Ansible Inventory

Inventory 組件主要存盤在配置管理作業中需要管理的不同業務的不同機器的資訊,默認 Ansible 的 Inventory 是靜態的 INI 格式的檔案/etc/ansible/hosts,可以通過 ANSIBLE_HOSTS 環境變數指定或者運行 ansible 和 ansible-playbook 的時候用 -i 引數臨時設定,

定義主機和主機組

首先看下默認 Inventory 檔案是如何定義主機和主機組的,默認的 Inventory 檔案如下:

# - 主機組由[header]元素分隔
# - 您可以輸入主機名或IP地址
# - hostname/ip 可以是多個組的成員

# 未組合的主機,在任何主機組之前指定,
## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10

# 屬于'webservers'組的主機集合
## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
# 如果有多個主機遵循模式
## www[001:006].example.com

# 'dbservers'組中的資料庫服務器集合
## [dbservers]
## 
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57
## db-[99:101]-node.example.com

多個 Inventory 串列

Ansible 支持多個 Inventory 檔案,方便管理維護不同業務或環境中的機器,下面介紹如何使用多個 Inventory 檔案,

首先新建一個檔案夾用來存放 Inventory 檔案

mkdir inventory

并在檔案夾內新建檔案,webservers 和 hosts,

hosts 檔案如下:

10.1.90.59
10.1.90.69

webservers 檔案如下:

[webservers]
10.1.90.59
10.1.90.69
[ansible:children]
webservers

然后修改 ansible.cfg 檔案中的 inventory 的默認路徑

inventory = /root/ansible/inventory/

這樣就可以使用 ansible 的list-hosts 引數來進行驗證

ansible 10.1.90.59:10.1.90.69 --list-hosts

回傳:

  hosts (2):
    10.1.90.59
    10.1.90.69

動態 Inventory

動態 Inventory 其實可以通過把 ansible.cfg 檔案中的 inventory 默認路徑改為一個腳本,

腳本需要支持兩個引數

  • list或者-l ,這個引數顯示所有主機以及主機組的資訊(json格式)
  • host或者-H ,引數后面指定一個host,會顯示這臺主機的所有資訊(json格式)

下面是 hosts.py 腳本:

import argparse
import sys
import json
def list():
    r={}
    h=['10.1.90.'+ str(i) for i in (59,69)]
    hosts={'host':h}
    r['webservers']=hosts
    return  json.dumps(r,indent=4)

def hosts(name):
    r={'ansible_ssh_pass':'123'}
    cpis=dict(r.items())
    return json.dumps(cpis)

if __name__=='__main__':
    parser=argparse.ArgumentParser()
    parser.add_argument('-l','--list',help='host list',action='store_true')
    parser.add_argument('-H','--host',help='hosts vars')
    args=vars(parser.parse_args())
    if args['list']:
        print list()
    elif args['host']:
        print hosts(args['host'])
    else:
        parser.print_help()

執行腳本函式 python hosts.py -l,回傳如下:

{
    "webservers": {
        "host": [
            "10.1.90.59", 
            "10.1.90.69"
        ]
    }
}

執行腳本函式 python hosts.py -H 10.1.90.59,回傳如下:{"ansible_ssh_pass": "123"}

執行臨時指定 hosts.py 腳本,
ansible -i hosts.py 10.1.90.59 -m ping -o,回傳結果:
10.1.90.59 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

如果報錯: [WARNING]: * Failed to parse /root/ansible/inventory/hosts.py with script plugin: problem running /root/ansible/inventory/hosts.py
--list ([Errno 13] Permission denied)
需要給予執行權限

chmod +x hosts.py

如果報錯:"msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"

需要安裝 sshpass

yum -y install sshpass

Inventory 內置引數

引數 解釋 例子
ansible_ssh_host 定義 host ssh 地址 ansible_ssh_host=10.1.90.59
ansible_ssh_port 定義 hosts ssh 埠 ansible_ssh_port=22
ansible_ssh_user 定義 hosts ssh 認證用戶 ansible_ssh_user=wupx
ansible_ssh_pass 定義 hosts ssh 認證密碼 ansible_ssh_pass=123
ansible_sudo 定義 hosts sudo的用戶 ansible_sudo=wupx
ansible_sudo_pass 定義 hosts sudo密碼 ansible_sudo_pass=123
ansible_sudo_exe 定義 hosts sudo 路徑 ansible_sudo_exe=/usr/bin/sudo
ansible_ssh_private_key_file 定義 hosts 私鑰 ansible_ssh_private_key_file=/root/key
ansible_shell_type 定義 hosts shell 型別 ansible_shell_type=bash
ansible_python_interpreter 定義 hosts 任務執行 python 的路徑 ansible_python_interpreter=/usr/bin/python2.6
ansible_*_interpreter 定義 hosts 其他語言決議器路徑 ansible_ruby_interpreter=/usr/bin/ruby

Ansible Ad-Hoc 命令

Ad-Hoc 其實就是臨時命令,Ad-Hoc 是相對于 Ansible-playbook 而言的,Ansible 提供兩種完成任務方式:一種是 Ad-Hoc 命令集,即ansible,另一種就是 Ansible-playbook,即命令 Ansible-playbook,前者更注重于解決一些簡單的或者平時作業中臨時遇到的任務,相當于Linux系統命令列下的Shell命令,后者更適合與解決復雜或需固化下來的任務,相當于Linux系統的Shell Scripts,

執行命令

Ansible 命令都是并發執行的,默認的并發數由 ansible.cfg 中的 forks 值來確定,也可以在執行命令時通過 -f 指定并發數,

使用命令回傳 webservers 組所有主機的 hostname,并指定并發數為 5:ansible webservers -m shell -a 'hostname' -f 5 -o

執行結果:

192.168.46.129 | CHANGED | rc=0 | (stdout) web2
192.168.46.128 | CHANGED | rc=0 | (stdout) web1

使用異步執行,-P 0 的情況下會直接回傳 job_id,然后針對主機根據 job_id 查詢執行結果:ansible webservers -B 120 -P 0 -m shell -a 'sleep 10;hostname' -f 5 -o

執行結果:

192.168.46.128 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "ansible_job_id": "899260515938.13222", "changed": true, "finished": 0, "results_file": "/root/.ansible_async/899260515938.13222", "started": 1}
192.168.46.129 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "ansible_job_id": "245835357736.13147", "changed": true, "finished": 0, "results_file": "/root/.ansible_async/245835357736.13147", "started": 1}

可以根據 job_id 通過 async_status 模塊查看異步任務的狀態和結果:ansible 192.168.46.128 -m async_status -a 'jid=899260515938.13222'

執行結果:

192.168.46.128 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "ansible_job_id": "899260515938.13222", 
    "changed": true, 
    "cmd": "sleep 10;hostname", 
    "delta": "0:00:10.024378", 
    "end": "2019-09-22 08:54:35.364400", 
    "finished": 1, 
    "rc": 0, 
    "start": "2019-09-22 08:54:25.340022", 
    "stderr": "", 
    "stderr_lines": [], 
    "stdout": "web1", 
    "stdout_lines": [
        "web1"
    ]
}

當-P 引數大于 0 時,Ansible 會自動根據 job_id 輪詢查詢執行結果:ansible webservers -B 120 -P 1 -m shell -a 'sleep 10;hostname' -f 5 -o

執行結果:

192.168.46.128 | CHANGED => {"ansible_job_id": "892179643372.13778", "changed": true, "cmd": "sleep 10;hostname", "delta": "0:00:10.023149", "end": "2019-09-22 09:01:57.625917", "finished": 1, "rc": 0, "start": "2019-09-22 09:01:47.602768", "stderr": "", "stderr_lines": [], "stdout": "web1", "stdout_lines": ["web1"]}
192.168.46.129 | CHANGED => {"ansible_job_id": "506204522875.13683", "changed": true, "cmd": "sleep 10;hostname", "delta": "0:00:10.029853", "end": "2019-09-22 09:01:59.039427", "finished": 1, "rc": 0, "start": "2019-09-22 09:01:49.009574", "stderr": "", "stderr_lines": [], "stdout": "web2", "stdout_lines": ["web2"]}

復制檔案

可以使用 copy 模塊來批量下發檔案,檔案的變化是通過 MD5 值來判斷的:ansible webservers -m copy -a 'src=https://www.cnblogs.com/wupeixuan/p/hosts dest=/root/hosts owner=root group=root mode=644 backup=yes' -o

回傳結果:

192.168.46.129 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum": "83e11aa2eb53ae6ea2476c05a8448696018401db", "dest": "/root/hosts", "gid": 0, "group": "root", "md5sum": "a154d2b2131e6420e51e293c540e4cb5", "mode": "0644", "owner": "root", "secontext": "system_u:object_r:admin_home_t:s0", "size": 1021, "src": "/root/.ansible/tmp/ansible-tmp-1569169777.73-89235977935/source", "state": "file", "uid": 0}
192.168.46.128 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum": "83e11aa2eb53ae6ea2476c05a8448696018401db", "dest": "/root/hosts", "gid": 0, "group": "root", "md5sum": "a154d2b2131e6420e51e293c540e4cb5", "mode": "0644", "owner": "root", "secontext": "system_u:object_r:admin_home_t:s0", "size": 1021, "src": "/root/.ansible/tmp/ansible-tmp-1569169777.73-148086225859296/source", "state": "file", "uid": 0}

驗證檔案下發功能:ansible webservers -m shell -a 'md5sum /root/hosts' -t 5 -o

回傳結果:

192.168.46.128 | CHANGED | rc=0 | (stdout) a154d2b2131e6420e51e293c540e4cb5  /root/hosts
192.168.46.129 | CHANGED | rc=0 | (stdout) a154d2b2131e6420e51e293c540e4cb5  /root/hosts

包和服務管理

可以直接使用 Ad-Hoc 命令來管理包和服務:

ansible webservers -m yum -a 'name=httpd state=latest' -f 5 -o

ansible webservers -m service -a 'name=httpd state=started' -f 5 -o

ansible webservers -m shell -a 'rpm -qa httpd' -f 5 -o

驗證服務運行情況:ansible webservers -m shell -a 'netstat -tpln|grep httpd' -f 5

回傳結果:

192.168.46.128 | CHANGED | rc=0 >>
tcp6       0      0 :::80                   :::*                    LISTEN      16853/httpd         

192.168.46.129 | CHANGED | rc=0 >>
tcp6       0      0 :::80                   :::*                    LISTEN      43184/httpd

用戶管理

首先通過 openssl 命令生成密碼(因為ansible user 的 password 引數需要接受加密后的值):echo ansible | openssl passwd -1 -stdin

回傳結果:$1$RBXBgM3M$WE3mYCc2gIlFIircO3unx.

使用 user 模塊批量新建用戶:ansible webservers -m user -a 'name=test password="$1$RBXBgM3M$WE3mYCc2gIlFIircO3unx."' -f 5 -o

回傳結果:

192.168.46.128 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "comment": "", "create_home": true, "group": 1001, "home": "/home/test", "name": "test", "password": "NOT_LOGGING_PASSWORD", "shell": "/bin/bash", "state": "present", "system": false, "uid": 1001}
192.168.46.129 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "comment": "", "create_home": true, "group": 1001, "home": "/home/test", "name": "test", "password": "NOT_LOGGING_PASSWORD", "shell": "/bin/bash", "state": "present", "system": false, "uid": 1001}

通過 SSH 登錄驗證新建用戶是否成功(密碼為 ansible):ssh 192.168.46.128 -l test

Ansible playbook

playbook 是 Ansible 進行配置管理的組件,是來彌補 Ad-Hoc 命令無法支撐復雜環境的配置管理作業的,playbook 是 Ansible 的重要組件之一,因此放在下一篇來對 Ansible 的 playbook 進行詳細講解,

Ansible facts

facts 組件是 Ansible 用于采集被管機器設備資訊的功能,可使用 setup 模塊查看機器所有 facts 資訊,或使用 filter 來查看指定資訊(回傳的結果是 JSON 格式),

查看機器的所有 facts 資訊:ansible 192.168.46.128 -m setup

查看機器的 ipv4 資訊:ansible 192.168.46.128 -m setup -a 'filter=ansible_all_ipv4_addresses'

回傳結果:

192.168.46.128 | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [
            "192.168.46.128"
        ], 
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false
}

使用 facter 擴展 facts 資訊

Ansible 的 facts 組件會判斷被控機器上是否安裝 facter 和 ruby-json 包,若存在,Ansible 的 facts 會采集 facter 資訊,

查看是否安裝 facter 和 ruby-json:ansible 192.168.46.128 -m shell -a 'rpm -qa ruby-json facter'

運行 facter 模塊查看 facter 資訊:ansible 192.168.46.128 -m facter

使用 ohai 擴展 facts 資訊

Ansible 的 facts 組件會判斷被控機器上是否安裝 ohai 包,若存在,Ansible 的 facts 會采集 ohai 資訊,

查看是否安裝 ohai:ansible 192.168.46.128 -m shell -a 'gem list|grep ohai'

運行 ohai 模塊查看 ohai 資訊:ansible 192.168.46.128 -m ohai

直接運行 setup 模塊也會采集 facter 和 ohai 資訊,

Ansible role

role 只是對我們使用的 playbook 的目錄結構進行一些規范,

這是一個 role 的目錄結構:

├── roles
    ├── dbsrvs -------------role1名稱
    │   ├── files -------------ansible中unarchive、copy等模塊會自動來這里找檔案,從而我們不必寫絕對路徑,只需寫檔案名
    │   │   ├── mysql.tar.gz
    │   │   └── nginx.tar.gz
    │   ├── handlers -----------存放tasks中的notify指定的內容
    │   │   └── main.yml
    │   ├── meta
    │   ├── tasks --------------存放playbook的目錄,其中main.yml是主入口檔案,在main.yml中匯入其他yml檔案,要采用import_tasks關鍵字,include要棄用了
    │   │   ├── install.yml
    │   │   └── main.yml -------主入口檔案
    │   ├── templates ----------存放模板檔案,template模塊會將模板檔案中的變數替換為實際值,然后覆寫到客戶機指定路徑上
    │   │   └── nginx.conf.j2
    │   └── vars ----------存放變數檔案
    └── websrvs -------------role2名稱
    │   ├── files
    │   │   ├── mysql.tar.gz
    │   │   └── nginx.tar.gz
    │   ├── handlers
    │   │   └── main.yml
    │   ├── meta
    │   ├── tasks
    │   │   ├── install.yml
    │   │   └── main.yml
    │   ├── templates
    │   │   └── nginx.conf.j2
    │   └── vars
    └── site.yml -------------role參考的入口檔案

執行 role:ansible-playbook -i /etc/ansible/hosts site.yml

Ansible Galaxy

Galaxy 是 Ansible 官方分享 role 的功能平臺,可將自己撰寫的 role 通過 ansible-galaxy 上傳到 Galaxy 網站,也可通過 ansible-galaxy 命令實作 role 的分享和安裝,使用ansible-galaxy install就可以安裝 role,默認安裝路徑為/etc/ansible/roles/

總結

本章主要介紹一些 Ansible 常用的組件,主要包含 Ansible Inventory、playbook、facts、role、Galaxy 等,下一篇將對 Ansible 中的 playbook 進行詳細講解,

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

標籤:其他

上一篇:CSAPP 3 程式的機器級表示

下一篇:一、計算機網路概論

標籤雲
其他(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)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more