阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ansible服务常用命令模块详细解析

409次阅读
没有评论

共计 15576 个字符,预计需要花费 39 分钟才能阅读完成。

ansible 可以使用命令行方式进行自动化管理,基本语法如下:

ansible 主机名 -m 模块名称 -a 模块特有参数

ansible 的命令行管理工具都是由一系列模块、参数所支持的,可以在命令后面加上 - h 或 –help 获取帮助。如使用 ansible-doc - h 或者 ansible-doc –help 查看其帮助信息

ansible-doc 是用来查看模块帮助信息的工具,最主要的选项 - l 用来列出可使用的模块,- s 用来列出某个模块的描述信息和使用示例。

以下是我列出 yum 模块的描述信息和操作动作:

[root@promote ~]# ansible-doc -s yum
– name: Manages packages with the `yum’ package manager
  yum:
      allow_downgrade:      # Specify if the named package and version is
                              allowed to
                              downgrade a maybe
                              already installed
                              higher version of
                              that package.
                              Note that setting
                              allow_downgrade=T
                              rue can make this
                              module behave in
                              a non-idempotent
                              way.

Ansible 自带了很多模块,能够下发执行 Ansible 的各种管理任务。下面我列出一些较为常用的模块。
1 command 模块
ansible 管理工具使用 - m 选项来指定使用模块,默认使用 command 模块,即 - m 选项省略时会运行次模块,用于在被管理主机上运行命令

[root@promote ~]# ansible-doc -s command
– name: Executes a command on a remote node
  command:
      argv:                  # Allows the user to provide the command as a list
                              vs. a string.
                              Only the string
                              or the list form
                              can be provided,
                              not both.  One or
                              the other must be
                              provided.
      chdir:                # Change into this directory before running the
                              command.
      creates:              # A filename or (since 2.0) glob pattern. If it
                              already exists,
                              this step *won’t*
                              be run.

ansible-doc -l    #列出所有已安装的模块 注:按 q 退出
ansible-doc -s yum    #- s 列出 yum 模块描述信息和操作动作
ansible 192.168.199.130 -m command -a ‘date’    #指定 IP 执行 date
ansible web -m command -a ‘date’    #指定分类执行 date
ansible all -m command -a ‘date’    #所有 hosts 主机执行 date
ansible all -a ‘ls /’    #如果不加 - m 模块,则默认运行 command 模块

下面我在 ansible 服务器上执行‘date’命令来查看被管理主机的时间:

[root@promote ~]# ansible all -a ‘date’
192.168.199.131 | CHANGED | rc=0 >>
2018 年 10 月 22 日 星期一 22:35:53 CST

192.168.199.130 | CHANGED | rc=0 >>
2018 年 10 月 22 日 星期一 22:35:53 CST

2 cron 模块
Ansible 中的 cron 模块用于定义计划任务。其中两种状态(state):present 表示添加(省略状态时默认使用),absent 表示移除

[root@promote ~]# ansible-doc -s cron              #查看 cron 模块信息
– name: Manage cron.d and crontab entries
  cron:
      backup:                # If set, create a backup of the crontab before it
                              is modified. The
                              location of the
                              backup is
                              returned in the
                              `backup_file’
                              variable by this
                              module.
……

添加任务计划:

[root@promote ~]# ansible web -m cron -a ‘minute=”*/1″ job=”/usr/bin/echo hehe” name=”test hehe”‘
192.168.199.130 | SUCCESS => {
    “changed”: false,
    “envs”: [],
    “jobs”: [
        “test hehe”
    ]
}
[root@promote ~]# ansible web -a ‘crontab -l’            #查看 web 主机的计划性任务
192.168.199.130 | CHANGED | rc=0 >>
#Ansible: test hehe
*/1 * * * * /usr/bin/echo hehe

移除任务计划:

[root@promote ~]# ansible web -m cron -a ‘name=”test hehe” state=absent’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “envs”: [],
    “jobs”: []
}
[root@promote ~]# ansible web -a ‘crontab -l’
192.168.199.130 | CHANGED | rc=0 >>

3 user 模块
ansible 中的 user 模块用于创建新用户和更改,删除已存在的用户,其中 name 项用来指明创建的用户名称
user 模块是请求的是 useadd,userdel,usermod 三个指令

创建一个名为 test01 的用户:

[root@promote ~]# ansible all -m user -a ‘name=test01’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “comment”: “”,
    “create_home”: true,
    “group”: 1001,
    “home”: “/home/test01”,
    “name”: “test01”,
    “shell”: “/bin/bash”,
    “state”: “present”,
    “system”: false,
    “uid”: 1001
}

删除 test01 用户:

[root@promote ~]# ansible all -m user -a ‘name=test01 state=absent’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “force”: false,
    “name”: “test01”,
    “remove”: false,
    “state”: “absent”
}

4 group 模块
ansible 中的 group 模块用于对用户组进行管理
group 模块请求的是 groupadd,groupdel,groupmod 三个指令

[root@promote ~]# ansible-doc -s group
– name: Add or remove groups
 group:
 gid:                  # Optional `GID’ to set for the group.
 name:                  # (required) Name of the group to manage.
 state:                # Whether the group should be present or not onthe remote host.
 system:                # If `yes’, indicates that the group created is asystem group.

下面我创建 mysql 组,将 mysql 用户添加到 mysql 组中

[root@promote ~]# ansible web -m group -a ‘name=mysql gid=306 system=yes’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “gid”: 306,
    “name”: “mysql”,
    “state”: “present”,
    “system”: true
}

[root@promote ~]# ansible web -m user -a ‘name=mysql uid=306 system=yes group=mysql’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “comment”: “”,
    “create_home”: true,
    “group”: 306,
    “home”: “/home/mysql”,
    “name”: “mysql”,
    “shell”: “/bin/bash”,
    “state”: “present”,
    “system”: true,
    “uid”: 306
}

5 copy 模块
ansible 中的 copy 模块用于实现文件复制和批量下发文件。其中使用 src 来定义本地源文件路径,使用 dest 定义被管理主机文件路径,使用 content 则是通过指定信息内容生成目标文件。

[root@promote ~]# ansible-doc -s copy                  #查看 copy 模块指令
– name: Copies files to remote locations
  copy:
      attributes:            # Attributes the file or directory should have. To get
                              supported flags look
                              at the man page for
                              `chattr’ on the target
                              system. This string
                              should contain the
                              attributes in the same
                              order as the one
                              displayed by `lsattr’.
                              `=’ operator is
                              assumed as default,
                              otherwise `+’ or `-‘
                              operators need to be
                              included in the
                              string.

下面我将本地文件 /etc/fstab 复制到被管理主机上的 /opt/fstab.bk,所有者设置为 root,权限设置为 640

[root@promote ~]# ansible web -m copy -a ‘src=/etc/fstab dest=/opt/fstab.bk owner=root mode=644’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “checksum”: “a8b8566b1d9f28b55823c8f61f88d35d81014418”,
    “dest”: “/opt/fstab.bk”,
    “gid”: 0,
    “group”: “root”,
    “md5sum”: “f25dda38d8c7bb5988c8607bc2a9a17b”,
    “mode”: “0644”,
    “owner”: “root”,
    “secontext”: “system_u:object_r:usr_t:s0”,
    “size”: 595,
    “src”: “/root/.ansible/tmp/ansible-tmp-1540220785.51-128147354820010/source”,
    “state”: “file”,
    “uid”: 0
}

[root@web ~]# ll /opt/fstab.bk
-rw-r–r–. 1 root root 595 10 月 22 23:06 /opt/fstab.bk

接着我将 ”hello” 写入“/opt/fstab.bk”

[root@promote ~]# ansible web -m copy -a ‘content=”hello!” dest=/opt/fstab.bk’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “checksum”: “8f7d88e901a5ad3a05d8cc0de93313fd76028f8c”,
    “dest”: “/opt/fstab.bk”,
    “gid”: 0,
    “group”: “root”,
    “md5sum”: “5a8dd3ad0756a93ded72b823b19dd877”,
    “mode”: “0644”,
    “owner”: “root”,
    “secontext”: “system_u:object_r:usr_t:s0”,
    “size”: 6,
    “src”: “/root/.ansible/tmp/ansible-tmp-1540221051.34-78743719487515/source”,
    “state”: “file”,
    “uid”: 0
}

[root@web ~]# cat /opt/fstab.bk
hello!

6 file 模块
在 ansible 中使用 file 模块来设置文件属性。其中使用 path 指定文件路径,使用 src 定义源文件路径,使用 name 或 dest 来替换创建文件的符号链接。
下面我将 web 服务器中的 fstab.bk 文件属主设为 mysql,属组设为 mysql,权限设为 666

[root@promote ~]# ansible web -m file -a ‘path=/opt/fstab.bk owner=mysql group=mysql mode=666’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “gid”: 306,
    “group”: “mysql”,
    “mode”: “0666”,
    “owner”: “mysql”,
    “path”: “/opt/fstab.bk”,
    “secontext”: “system_u:object_r:usr_t:s0”,
    “size”: 6,
    “state”: “file”,
    “uid”: 306
}

[root@web ~]# ll /opt/fstab.bk
-rw-rw-rw-. 1 mysql mysql 6 10 月 22 23:10 /opt/fstab.bk

下面我为 /opt/fstab.bk/ 创建一个链接文件

[root@promote ~]# ansible web -m file -a ‘src=/opt/fstab.bk path=/opt/fstab.bk.link state=link’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “dest”: “/opt/fstab.bk.link”,
    “gid”: 0,
    “group”: “root”,
    “mode”: “0777”,
    “owner”: “root”,
    “secontext”: “unconfined_u:object_r:usr_t:s0”,
    “size”: 13,
    “src”: “/opt/fstab.bk”,
    “state”: “link”,
    “uid”: 0
}

[root@web opt]# ll fstab.bk.link
lrwxrwxrwx. 1 root root 13 10 月 22 23:23 fstab.bk.link -> /opt/fstab.bk

7 ping 模块
在 ansible 中使用 ping 模块来检测指定主机的连通性

[root@promote ~]# ansible all -m ping     
192.168.199.130 | SUCCESS => {
    “changed”: false,
    “ping”: “pong”
}
192.168.199.131 | SUCCESS => {
    “changed”: false,
    “ping”: “pong”
}

8 yum 模块
ansible 中的 yum 模块负责在被管理主机上安装与卸载软件包,但是需要提前在每个节点配置自己的 yum 仓库。其中 name 指定要安装的软件包,还需要带上软件包的版本号,否则安装最新的软件包,使用 state 指定安装软件包的状态,present,latest 用来表示安装,absent 表示卸载。

[root@promote ~]# ansible-doc -s yum
– name: Manages packages with the `yum’ package manager
  yum:
      allow_downgrade:      # Specify if the named package and version is allowed
                              to downgrade a maybe
                              already installed
                              higher version of that
                              package.

在 web 服务器上安装 httpd 服务:

[root@promote ~]# ansible web -m yum -a ‘name=httpd’
192.168.199.130 | CHANGED => {
    “ansible_facts”: {
        “pkg_mgr”: “yum”
    },
    “changed”: true,
    “msg”: “warning: /var/cache/yum/x86_64/7/base/packages/mailcap-2.1.41-2.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY\nhttp://mirrors.njupt.edu.cn/CentOS/7.5.1804/os/x86_64/Packages/apr-1.4.8-3.el7_4.1.x86_64.rpm: [Errno 14] HTTP Error 302 – Found\nTrying other mirror.\nImporting GPG key 0xF4A80EB5:\n Userid    : \”CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>\”\n Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5\n Package    : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda)\n From      : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7\n”,
    “rc”: 0,
    “results”: [
        “Loaded plugins: fastestmirror, langpacks\nLoading mirror speeds from cached hostfile\n * base: mirrors.njupt.edu.cn\n * extras: mirrors.nju.edu.cn\n * updates: mirrors.njupt.edu.cn\nResolving Dependencies\n–> Running transaction check\n—> Package httpd.x86_64 0:2.4.6-80.el7.centos.1 will be installed\n–> Processing Dependency: httpd-tools = 2.4.6-80.el7.centos.1 for package: httpd-2.4.6-80.el7.centos.1.x86_64\n–> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-80.el7.centos.1.x86_64\n–> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-80.el7.centos.1.x86_64\n–> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-80.el7.centos.1.x86_64\n–> Running transaction check\n—> Package apr.x86_64 0:1.4.8-3.el7_4.1 will be installed\n—> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed\n—> Package httpd-tools.x86_64 0:2.4.6-80.el7.centos.1 will be installed\n—> Package mailcap.noarch 0:2.1.41-2.el7 will be installed\n–> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package          Arch        Version                    Repository    Size\n================================================================================\nInstalling:\n httpd            x86_64      2.4.6-80.el7.centos.1      updates      2.7 M\nInstalling for dependencies:\n apr              x86_64      1.4.8-3.el7_4.1            base          103 k\n apr-util          x86_64      1.5.2-6.el7                base          92 k\n httpd-tools      x86_64      2.4.6-80.el7.centos.1      updates        90 k\n mailcap          noarch      2.1.41-2.el7                base          31 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package (+4 Dependent packages)\n\nTotal download size: 3.0 M\nInstalled size: 10 M\nDownloading packages:\nPublic key for mailcap-2.1.41-2.el7.noarch.rpm is not installed\nPublic key for httpd-tools-2.4.6-80.el7.centos.1.x86_64.rpm is not installed\n——————————————————————————–\nTotal                                              143 kB/s | 3.0 MB  00:21    \nRetrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : apr-1.4.8-3.el7_4.1.x86_64                                  1/5 \n  Installing : apr-util-1.5.2-6.el7.x86_64                                  2/5 \n  Installing : httpd-tools-2.4.6-80.el7.centos.1.x86_64                    3/5 \n  Installing : mailcap-2.1.41-2.el7.noarch                                  4/5 \n  Installing : httpd-2.4.6-80.el7.centos.1.x86_64                          5/5 \n  Verifying  : mailcap-2.1.41-2.el7.noarch                                  1/5 \n  Verifying  : httpd-tools-2.4.6-80.el7.centos.1.x86_64                    2/5 \n  Verifying  : apr-util-1.5.2-6.el7.x86_64                                  3/5 \n  Verifying  : apr-1.4.8-3.el7_4.1.x86_64                                  4/5 \n  Verifying  : httpd-2.4.6-80.el7.centos.1.x86_64                          5/5 \n\nInstalled:\n  httpd.x86_64 0:2.4.6-80.el7.centos.1                                          \n\nDependency Installed:\n  apr.x86_64 0:1.4.8-3.el7_4.1                  apr-util.x86_64 0:1.5.2-6.el7  \n  httpd-tools.x86_64 0:2.4.6-80.el7.centos.1    mailcap.noarch 0:2.1.41-2.el7  \n\nComplete!\n”
    ]
}

[root@web ~]# rpm -q httpd                  #在 web 服务器上进行查看
httpd-2.4.6-80.el7.centos.1.x86_64

卸载的命令为 ansible web -m yum -a ‘name=httpd state=absent’ 这里为了我下面的实验就先不卸载了

9 service 模块
在 ansible 模块中使用 service 模块来控制管理服务的运行状态。其中,使用 enabled 表示是否开机自动启动,取值为 true 或者 false; 使用 name 定义服务名称;使用 state 指定服务状态,取值分别为 start,stopped,restarted.

下面我先查看 web 服务器上的 httpd 服务的运行状态

[root@promote ~]# ansible web -a ‘systemctl status httpd.service’
192.168.199.130 | FAILED | rc=3 >>            #可以看到现在 httpd 服务是关闭状态
● httpd.service – The Apache HTTP Server
  Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)

接着我开启 web 服务器上的 httpd 服务,并设为开机自启动

[root@promote ~]# ansible web -m service -a ‘enabled=true name=httpd state=started’
192.168.199.130 | SUCCESS => {
    “changed”: false,
    “enabled”: true,
    “name”: “httpd”,
    “state”: “started”,
    “status”: {
[root@web ~]# systemctl status httpd.service              #到 web 服务器上查看状态
● httpd.service – The Apache HTTP Server
  Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Active: active (running) since 一 2018-10-22 23:47:51 CST; 2min 58s ago          #可以看到服务为运行状态

最后我将 web 服务器的 httpd 服务进行关闭

[root@promote ~]# ansible web -m service -a ‘name=httpd enabled=true state=stopped’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “enabled”: true,
    “name”: “httpd”,
    “state”: “stopped”,
    “status”: {
[root@web ~]# systemctl status httpd.service          #再次到 web 服务器进行查看
● httpd.service – The Apache HTTP Server
  Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Active: inactive (dead) since 一 2018-10-22 23:54:30 CST; 25s ago                        #可以看到 httpd 已经关闭

10 shell 模块
ansible 中的 shell 模块可以在被管理主机上运行命令,并支持像管道符号等功能的复杂命令。

[root@promote ~]# ansible-doc -s shell
– name: Execute commands in nodes.
  shell:
      chdir:                # cd into this directory before running the command
      creates:              # a filename, when it already exists, this step will
                              *not* be run.
      executable:            # change the shell used to execute the command. Should
                              be an absolute path to
                              the executable.
      free_form:            # (required) The shell module takes a free form command
                              to run, as a string.
                              There’s not an actual
                              option named “free
                              form”.  See the
                              examples!
      removes:              # a filename, when it does not exist, this step will
                              *not* be run.
      stdin:                # Set the stdin of the command directly to the
                              specified value.
      warn:                  # if command warnings are on in ansible.cfg, do not
                              warn about this
                              particular line if set
                              to no/false.

下面我创建一个 Jerry 用户,并为这个用户设置密码:

[root@promote ~]# ansible web -m user -a ‘name=jerry’              #创建 Jerry 用户
192.168.199.130 | CHANGED => {
    “changed”: true,
    “comment”: “”,
    “create_home”: true,
    “group”: 1001,
    “home”: “/home/jerry”,
    “name”: “jerry”,
    “shell”: “/bin/bash”,
    “state”: “present”,
    “system”: false,
    “uid”: 1001
}
[root@promote ~]# ansible web -m shell -a ‘echo 123456 | passwd –stdin jerry’            #为用户设置密码为 123456
192.168.199.130 | CHANGED | rc=0 >>
更改用户 jerry 的密码。
passwd:所有的身份验证令牌已经成功更新。

11 script 模块
ansible 中的 script 模块可以将本地脚本复制到被管理主机上进行运行。需要注意的是,使用相对路径来指定脚本。

[root@promote ~]# vim test.sh
#!/bin/bash
echo “this is test script” > /opt/script.txt
chmod 666 /opt/script.txt                        #写一个脚本,表示在 /opt/ 创建一个 script.txt 文件,权限设为 666

[root@promote ~]# chmod +x test.sh
[root@promote ~]# ansible web -m script -a ‘test.sh’
192.168.199.130 | CHANGED => {
    “changed”: true,
    “rc”: 0,
    “stderr”: “Shared connection to 192.168.199.130 closed.\r\n”,
    “stderr_lines”: [
        “Shared connection to 192.168.199.130 closed.”
    ],
    “stdout”: “”,
    “stdout_lines”: []
}
[root@web ~]# ls -l /opt/script.txt                    #到 web 服务器上进行查看
-rw-rw-rw-. 1 root root 20 10 月 23 00:07 /opt/script.txt
[root@web ~]# cat /opt/script.txt
this is test script

12 setup 模块
在 ansible 中使用 setup 模块收集,查看被管理主机的 facts(faces 是 ansible 采集被管理主机设备信息的一个功能)。每个被管理主机在接受并运行管理命令之前,都会将自己的相关信息发送给控制主机。

[root@promote ~]# ansible web -m setup          #对 web 服务器进行查看,显示的信息非常多,这里我只选了一部分
192.168.199.130 | SUCCESS => {
    “ansible_facts”: {
        “ansible_all_ipv4_addresses”: [
            “192.168.122.1”,
            “192.168.199.130”
        ],
        “ansible_all_ipv6_addresses”: [
            “fe80::a392:f598:b619:50”
        ],
        “ansible_apparmor”: {
            “status”: “disabled”
        },
        “ansible_architecture”: “x86_64”,
        “ansible_bios_date”: “05/19/2017”,
        “ansible_bios_version”: “6.00”,
        “ansible_cmdline”: {
            “BOOT_IMAGE”: “/boot/vmlinuz-3.10.0-693.el7.x86_64”,
            “LANG”: “zh_CN.UTF-8”,
            “crashkernel”: “auto”,
            “quiet”: true,
            “rhgb”: true,
            “ro”: true,
            “root”: “UUID=1eead85f-d0ea-464e-b163-f9c7475dbf65”
        },
………..

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计15576字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7815469
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
优雅、强大、轻量开源的多服务器监控神器

优雅、强大、轻量开源的多服务器监控神器

优雅、强大、轻量开源的多服务器监控神器 在多台服务器同时运行的环境中,性能监控、状态告警、资源可视化 是运维人...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...