OpenStack 安装脚本

私有云平台搭建——OpenStack 私有云平台搭建——OpenStack 搭建过程 阅读详情

准备

  • 设置主机名和hosts文件

    给每个节点设置主机名,并在所有节点设置hosts,虚拟IP在hosts文件中配置主机名为controller

    # 设置主机名
    # controller1 执行
    hostnamectl set-hostname controller1
    hostname
    # [root@localhost ~]# hostnamectl set-hostname controller1
    # [root@localhost ~]# hostname
    # controller1
    
    # controller2
    hostnamectl set-hostname controller2
    hostname
    # [root@localhost ~]# hostnamectl set-hostname controller2
    # [root@localhost ~]# hostname
    # controller2
    
    # controller3
    hostnamectl set-hostname controller3
    hostname
    # [root@localhost ~]# hostnamectl set-hostname controller3
    # [root@localhost ~]# hostname
    # controller3
    
    # 配置hosts
    cat << EOF >> /etc/hosts
    192.168.5.20        controller
    192.168.5.21        controller1
    192.168.5.22        controller2
    192.168.5.23        controller3
    EOF
    
    # 验证
    cat /etc/hosts
    # [root@localhost ~]# cat /etc/hosts
    # 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    # ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    # 192.168.5.20        controller
    # 192.168.5.21        controller1
    # 192.168.5.22        controller2
    # 192.168.5.23        controller3
    
    ping -c 4 controller1
    # [root@localhost ~]# ping -c 4 controller1
    # PING controller1 (192.168.5.21) 56(84) bytes of data.
    # 64 bytes from controller1 (192.168.5.21): icmp_seq=1 ttl=64 time=0.052 ms
    # 64 bytes from controller1 (192.168.5.21): icmp_seq=2 ttl=64 time=0.080 ms
    # 64 bytes from controller1 (192.168.5.21): icmp_seq=3 ttl=64 time=0.073 ms
    # 64 bytes from controller1 (192.168.5.21): icmp_seq=4 ttl=64 time=0.061 ms
    # 
    # --- controller1 ping statistics ---
    # 4 packets transmitted, 4 received, 0% packet loss, time 2999ms
    # rtt min/avg/max/mdev = 0.052/0.066/0.080/0.013 ms
    
    ping -c 4 controller2
    # [root@localhost ~]# ping -c 4 controller2
    # PING controller2 (192.168.5.22) 56(84) bytes of data.
    # 64 bytes from controller2 (192.168.5.22): icmp_seq=1 ttl=64 time=0.316 ms
    # 64 bytes from controller2 (192.168.5.22): icmp_seq=2 ttl=64 time=0.583 ms
    # 64 bytes from controller2 (192.168.5.22): icmp_seq=3 ttl=64 time=0.426 ms
    # 64 bytes from controller2 (192.168.5.22): icmp_seq=4 ttl=64 time=0.445 ms
    # 
    # --- controller2 ping statistics ---
    # 4 packets transmitted, 4 received, 0% packet loss, time 2999ms
    # rtt min/avg/max/mdev = 0.316/0.442/0.583/0.097 ms
    
    ping -c 4 controller3
    # [root@localhost ~]# ping -c 4 controller3
    # PING controller3 (192.168.5.23) 56(84) bytes of data.
    # 64 bytes from controller3 (192.168.5.23): icmp_seq=1 ttl=64 time=0.287 ms
    # 64 bytes from controller3 (192.168.5.23): icmp_seq=2 ttl=64 time=0.385 ms
    # 64 bytes from controller3 (192.168.5.23): icmp_seq=3 ttl=64 time=0.454 ms
    # 64 bytes from controller3 (192.168.5.23): icmp_seq=4 ttl=64 time=0.374 ms
    # 
    # --- controller3 ping statistics ---
    # 4 packets transmitted, 4 received, 0% packet loss, time 3000ms
    # rtt min/avg/max/mdev = 0.287/0.375/0.454/0.059 ms
    
    
  • 防火墙相互放行

    在全部主机设置,放行各个主机的IP

    firewall-cmd --permanent --zone=trusted --add-source=192.168.5.20 --add-source=192.168.5.21 --add-source=192.168.5.22 --add-source=192.168.5.23
    # 验证
    firewall-cmd --zone=trusted --list-sources --permanent
    # [root@localhost ~]# firewall-cmd --zone=trusted --list-sources --permanent
    # 192.168.5.20 192.168.5.21 192.168.5.22 192.168.5.23
    
    firewall-cmd --zone=trusted --add-source=192.168.5.20 --add-source=192.168.5.21 --add-source=192.168.5.22 --add-source=192.168.5.23
    # 验证
    firewall-cmd --zone=trusted --list-sources
    # [root@localhost ~]# firewall-cmd --zone=trusted --list-sources
    # 192.168.5.20 192.168.5.21 192.168.5.22 192.168.5.23
    
  • 节点互信

    # controller1 操作
    ssh-keygen
    # [root@localhost ~]# ssh-keygen
    # 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:BvqnKepnbPEirSfukBb9PrAFYpwtz3PiHP0uc1WvjU0 root@controller1
    # The key's randomart image is:
    # +---[RSA 2048]----+
    # |                 |
    # |                 |
    # |. o   .          |
    # | *.o . .   .     |
    # |..=.+   S . .    |
    # | ..Bo= . .   E   |
    # |o.ooO+o o   *    |
    # |..o+@+.*   o o   |
    # | +*X +O.         |
    # +----[SHA256]-----+
    
    ssh-copy-id root@controller1
    # [root@localhost ~]# ssh-copy-id root@controller1
    # /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    # The authenticity of host 'controller1 (192.168.5.21)' can't be established.
    # ECDSA key fingerprint is SHA256:1UIr4UMccY+KofSegOIfp/SbKDH2cpLSlWYzTtVBUQo.
    # ECDSA key fingerprint is MD5:63:ea:b3:bc:0c:42:17:db:c0:ca:f0:45:a1:84:2e:c3.
    # Are you sure you want to continue connecting (yes/no)? 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
    # root@controller1's password:
    # 
    # Number of key(s) added: 1
    # 
    # Now try logging into the machine, with:   "ssh 'root@controller1'"
    # and check to make sure that only the key(s) you wanted were added.
    
    scp -r ~/.ssh root@controller2:~/
    # [root@localhost ~]# scp -r ~/.ssh root@controller2:~/
    # The authenticity of host 'controller2 (192.168.5.22)' can't be established.
    # ECDSA key fingerprint is SHA256:1UIr4UMccY+KofSegOIfp/SbKDH2cpLSlWYzTtVBUQo.
    # ECDSA key fingerprint is MD5:63:ea:b3:bc:0c:42:17:db:c0:ca:f0:45:a1:84:2e:c3.
    # Are you sure you want to continue connecting (yes/no)? yes
    # Warning: Permanently added 'controller2,192.168.5.22' (ECDSA) to the list of known hosts.
    # root@controller2's password:
    # id_rsa                           100% 1675     1.4MB/s   00:00
    # id_rsa.pub                       100%  398   431.6KB/s   00:00
    # known_hosts                      100%  372   516.4KB/s   00:00
    # authorized_keys                  100%  398   453.9KB/s   00:00
    
    scp -r ~/.ssh root@controller3:~/
    # [root@localhost ~]# scp -r ~/.ssh root@controller3:~/
    # The authenticity of host 'controller3 (192.168.5.23)' can't be established.
    # ECDSA key fingerprint is SHA256:1UIr4UMccY+KofSegOIfp/SbKDH2cpLSlWYzTtVBUQo.
    # ECDSA key fingerprint is MD5:63:ea:b3:bc:0c:42:17:db:c0:ca:f0:45:a1:84:2e:c3.
    # Are you sure you want to continue connecting (yes/no)? yes
    # Warning: Permanently added 'controller3,192.168.5.23' (ECDSA) to the list of known hosts.
    # root@controller3's password:
    # id_rsa                          100% 1675     1.2MB/s   00:00
    # id_rsa.pub                      100%  398   332.9KB/s   00:00
    # known_hosts                     100%  558   540.3KB/s   00:00
    # authorized_keys                 100%  398   494.5KB/s   00:00
    
    
    # 验证
    ssh root@controller1 hostname
    # [root@localhost ~]# ssh root@controller1 hostname
    # controller1
    
    ssh root@controller2 hostname
    # [root@localhost ~]# ssh root@controller2 hostname
    # controller2
    
    ssh root@controller3 hostname
    # [root@localhost ~]# ssh root@controller3 hostname
    # controller3
    
    
  • 上传安装软件包,解压到指定文件夹

    mkdir -p /data/packages
    tar xvf openstack.tar.gz -C /data/packages/
    # 验证
    ls /data/packages/openstack/
    # [root@localhost ~]# ls /data/packages/openstack/
    # base  ceph-deploy  cinder  haproxy  keystone  memcached 
    # neutron-controller  nova-controller  rabbitmq ceph  chrony 
    # glance  images   mariadb   neutron-compute  nova-compute pacemaker
    
    

修改集群配置文件

使用文本编辑工具,按照集群的规格,编辑config文件内容。

  • 检查配置文件内容
    egrep -v '(^#|^$)' config
    

基础配置

# 加载集群配置信息
source config
#执行基础环境脚本
bash base/base.sh
# 安装基础软件包
yum localinstall -y $PACKAGES_DIR/base/*.rpm
# 重启服务器
reboot

配置网络时间

# 加载集群配置信息
source config
#执行安装脚本
bash chrony/chrony.sh

PACEMAKER集群

# 加载集群配置信息
source config
# 执行安装脚本(主节点存在交互操作)
bash pacemaker/pacemaker.sh
# 验证
pcs status
ping -c 4 $OPENSTACK_VIP

HaProxy集群

# 加载集群配置信息
source config
# 执行安装脚本
bash haproxy/haproxy.sh
# 验证
# 访问网页 http://ip:8888/admin
# 账号: admin  密码通过命令 echo $HAPROXY_PASS 查看

MariaDB集群

# 加载集群配置信息
source config
# 执行安装脚本(主节点存在交互操作)
bash mariadb/mariadb.sh
# 删除不安全用户
mysql -uroot -e "DELETE FROM mysql.user WHERE user='' OR host='`hostname`';"
mysql -uroot -e 'FLUSH PRIVILEGES;'
# 验证
mysql -uhaproxy -h controller -e 'SHOW STATUS LIKE "wsrep%";'

RabbitMQ

# 加载集群配置信息
source config
# 执行安装脚本(其它节点存在交互操作)
bash rabbitmq/rabbitmq.sh
# 验证
rabbitmqctl authenticate_user openstack $RABBIT_PASS

Memcached

# 加载集群配置信息
source config
# 执行安装脚本
bash memcached/memcached.sh

ceph

# 加载集群配置信息
source config
# 执行安装脚本(存在交互操作)
bash ceph/ceph.sh
# 验证
ceph -s | grep health:
# 设置副本数(非必须,默认值为3)
openstack-config --set /etc/ceph/ceph.conf 'global' 'osd pool default size' '3'
systemctl restart ceph.target

keystone

# 加载集群配置信息
source config
# 执行安装脚本
bash keystone/keystone.sh
# 验证
. ~/openstack/admin-openrc
openstack token issue

glance

# 加载集群配置信息
source config
# 执行安装脚本
bash glance/glance.sh
# 集成ceph
bash glance/glance-ceph.sh
# 验证
# 上传镜像 controller1执行
openstack image create "cirros" \
--file $PACKAGES_DIR/images/cirros-0.4.0-x86_64-disk.raw \
--disk-format raw --container-format bare \
--property hw_scsi_model=virtio-scsi \
--property hw_disk_bus=scsi \
--property hw_qemu_guest_agent=yes \
--property os_require_quiesce=yes \
--property os_type=linux \
--property os_admin_user=root \
--property login_name=cirros \
--property login_password=gocubsgo \
--public 
# 查看镜像列表
openstack image list
# 查看ceph文件
rbd ls images

nova controller

# 加载集群配置信息
source config
# 执行安装脚本(存在交互操作)
bash nova/nova-controller.sh
# 验证
openstack compute service list --host `hostname`
# [root@controller1 openstack-script]# openstack compute service list --host `hostname`
# +----+------------------+-------------+----------+---------+-------+----------------------------+
# | ID | Binary           | Host        | Zone     | Status  | State | Updated At                 |
# +----+------------------+-------------+----------+---------+-------+----------------------------+
# | 10 | nova-consoleauth | controller1 | internal | enabled | up    | 2019-07-11T10:06:55.000000 |
# | 49 | nova-scheduler   | controller1 | internal | enabled | up    | 2019-07-11T10:06:55.000000 |
# | 88 | nova-conductor   | controller1 | internal | enabled | up    | 2019-07-11T10:06:56.000000 |
# +----+------------------+-------------+----------+---------+-------+----------------------------+

nova compute

# 加载集群配置信息
source config
# 执行安装脚本
bash nova/nova-compute.sh
# 验证
openstack compute service list --host `hostname` --service nova-compute
# [root@controller1 openstack-script]# openstack compute service list --host `hostname` --service nova-compute
# +-----+--------------+-------------+------+---------+-------+----------------------------+
# |  ID | Binary       | Host        | Zone | Status  | State | Updated At                 |
# +-----+--------------+-------------+------+---------+-------+----------------------------+
# | 154 | nova-compute | controller1 | nova | enabled | up    | 2019-07-11T10:11:56.000000 |
# +-----+--------------+-------------+------+---------+-------+----------------------------+

# 如不物理机不支持kvm虚拟机,则需要配置qemu虚拟化(可选)
egrep -o '(vmx|svm)' /proc/cpuinfo
openstack-config --set /etc/nova/nova.conf 'libvirt' 'virt_type' 'qemu'
openstack-config --set /etc/nova/nova.conf 'libvirt' 'cpm_mode' 'none'
systemctl restart openstack-nova-compute.service
systemctl status openstack-nova-compute.service

neutron controller

# 加载集群配置信息
source config
# 执行安装脚本(存在交互操作)
bash neutron/neutron-controller.sh
# 验证
openstack network agent list --host `hostname`
# [root@controller1 openstack-script]# openstack network agent list --host `hostname`
# +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
# | ID                                   | Agent Type         | Host        | Availability Zone | Alive | State | Binary                    |
# +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
# | 07ed26e0-6a1a-4405-a3a2-c6f2413ebfe6 | DHCP agent         | controller1 | nova              | :-)   | UP    | neutron-dhcp-agent        |
# | 30bc443f-e54b-466d-baa6-1d2646f6e290 | L3 agent           | controller1 | nova              | :-)   | UP    | neutron-l3-agent          |
# | 82966bcd-b726-493c-a03c-490fa14b0764 | Metadata agent     | controller1 | None              | :-)   | UP    | neutron-metadata-agent    |
# | d796e67b-3772-4eb1-8d18-889a6dbb0b4a | Linux bridge agent | controller1 | None              | :-)   | UP    | neutron-linuxbridge-agent |
# +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+

neutron compute

# 加载集群配置信息
source config
# 执行安装脚本
bash neutron/neutron-compute.sh
# 验证
openstack network agent list --host `hostname` --agent-type linux-bridge
# [root@controller1 openstack-script]# openstack network agent list --host `hostname` --agent-type linux-bridge
# +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
# | ID                                   | Agent Type         | Host        | Availability Zone | Alive | State | Binary                    |
# +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
# | d796e67b-3772-4eb1-8d18-889a6dbb0b4a | Linux bridge agent | controller1 | None              | :-)   | UP    | neutron-linuxbridge-agent |
# +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+

创建网络

注意:在任意一个控制节点执行

  • 创建外部网络

    [controller1]

    openstack network create  --share --external \
      --provider-physical-network provider \
      --provider-network-type flat provider
    
  • 创建外部网络子网

    # 创建一个IP范围为192.168.5.100-192.168.5.120,子网掩码24,网关192.168.5.1,dns为114.114.114.114,8.8.8.8的外部网络子网
    openstack subnet create --network provider \
      --allocation-pool start=192.168.5.100,end=192.168.5.120 \
      --dns-nameserver 114.114.114.114 --dns-nameserver 8.8.8.8 \
      --gateway 192.168.5.1 \
      --subnet-range 192.168.5.0/24 provider
    
  • 创建内部网络

    openstack network create selfservice
    
  • 创建内部网络子网

    # 创建一个IP范围为172.16.1.1-172.16.1.254,子网掩码24,网关172.16.1.1,dns为114.114.114.114,8.8.8.8的内部网络子网
    openstack subnet create --network selfservice \
      --dns-nameserver 114.114.114.114 --dns-nameserver 8.8.8.8 \
      --gateway 172.16.1.1 \
      --subnet-range 172.16.1.0/24 selfservice
    
  • 创建路由

    openstack router create router
    
  • 内部网络添加路由

    neutron router-interface-add router selfservice
    
  • 路由设置外部网关

    neutron router-gateway-set router provider
    

cinder

# 加载集群配置信息
source config
# 执行安装脚本(存在交互操作)
bash cinder/cinder.sh
# 集成ceph
bash cinder/cinder-ceph.sh
# 设置单个卷大小限制
openstack quota set --class --per-volume-gigabytes 100 default
# 验证
openstack volume service list
# [root@controller1 openstack-script]# openstack volume service list
# +------------------+------------------+------+---------+-------+----------------------------+
# | Binary           | Host             | Zone | Status  | State | Updated At                 |
# +------------------+------------------+------+---------+-------+----------------------------+
# | cinder-scheduler | controller2      | nova | enabled | up    | 2019-07-11T10:43:16.000000 |
# | cinder-scheduler | controller3      | nova | enabled | up    | 2019-07-11T10:43:16.000000 |
# | cinder-scheduler | controller1      | nova | enabled | up    | 2019-07-11T10:43:16.000000 |
# | cinder-volume    | controller2@ceph | nova | enabled | up    | 2019-07-11T10:43:15.000000 |
# | cinder-volume    | controller3@ceph | nova | enabled | up    | 2019-07-11T10:43:16.000000 |
# | cinder-volume    | controller1@ceph | nova | enabled | up    | 2019-07-11T10:43:15.000000 |
# +------------------+------------------+------+---------+-------+----------------------------+

huluer

# 加载集群配置信息
source config
# 执行安装脚本
bash huluer/huluer.sh

服务检测和重启脚本

# 服务状态检测
cp -f utils/check-openstack-service.sh ~/openstack/check-openstack-service.sh
chmod +x ~/openstack/check-openstack-service.sh
# 验证
~/openstack/check-openstack-service.sh

# 重启服务脚本
cp -f utils/restart-openstack-service.sh ~/openstack/restart-openstack-service.sh
chmod +x ~/openstack/restart-openstack-service.sh
# 验证,注意:重启脚本不要同时执行
~/openstack/restart-openstack-service.sh

数据库恢复脚本

启动关闭的数据库,支持以下几种情况:1.集群还存在运行节点。2.集群全部正常关闭。3.集群全部异常关闭。

cp -f utils/recovery-mariadb.sh ~/openstack/recovery-mariadb.sh
chmod +x ~/openstack/recovery-mariadb.sh
使用脚本部署openstack平台 一台控制节点和一台计算节点组成简单架构OpenStack平台,控制节点安装MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服务,主要作为认证、镜像管理节点,以及提供Nova和Neutron服务的管理节点。计算节点主要安装nova-compute和Neutron服务,Nova服务提供云主机服务,Neutron提供网络服务。通过Shell脚本进行OpenStack平台部署,脚本分为控制节点脚本和计算节点脚本,对应节点执行部署脚本。1.6 控制节点安装vsftpd服务。 阅读详情

相关推荐

openstack安装nova+脚本

给三个数据库添加权限添加本地访问权限。

2302_81688883的博客 926

Openstack安装过程及步骤

OpenStack,先电脚本安装题。

qq_38624154的博客 2431

OpenStack-Mitaka 一键安装测试环境脚本

  说明:这个脚本是采用Bash Shell编写,这个版本还只能作为测试环境搭建使用。   此脚本原形的发起人是网友:WuYuLiang.这里有他的博客链接:   第一版的链接:http://blog.youkuaiyun.com/wylfengyujiancheng/article/details/51137707   最新版链接:http://blog.youkuaiyun.com/wylfengyujiancheng/article/details/51939239   这个连接是我github上关于...

sinat_28371057的博客 668

手动搭建openstack云平台-Linux

准备2台VMware虚拟机,手动最小化安装2台CentOS 7.2系统,作为OpenStack节点,第一张网卡为仅主机模式,第二张网卡为NAT模式,以及配置CPU虚拟化,计算节点至少使用4 GB内存,硬盘不小于50GB。上传XianDian-IaaS-v2.2.iso和CentOS-7-x86_64-DVD-1511.iso两个镜像包至controller节点/root目录中,并将ISO文件挂载至/opt/目录中。将controller节点的openrc.sh传输至compute节点所放目录下。

qq_63086586的博客 1733

Ubuntu 24.04 高效部署Slurm集群:从零到生产环境实战

本文提供了一份在Ubuntu 24.04 LTS系统上从零开始部署生产级Slurm高性能计算集群的完整实战指南。内容涵盖网络配置、Munge安全认证、Slurm核心组件安装与配置,并深入讲解了cgroups资源隔离、NFS共享存储、配置无感知模式等生产环境优化技巧,最后通过实例演示如何提交与管理Slurm作业,帮助用户构建高效、稳定的计算平台。

weixin_29213655的博客 564

用面包板实测MOSFET:手把手教你测量跨导和开关时间

本文详细介绍了如何使用面包板、Arduino和示波器搭建测试平台,实测MOSFET的跨导和开关时间。通过分步测量流程和示波器技巧,帮助电子设计初学者深入理解MOSFET的动态特性,包括跨导计算、开关时间参数解析以及米勒平台现象分析。

beer8的博客 217

2024年河北省职业院校技能大赛云计算应用赛项赛题第5套

某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenStack搭建企业内部私有云平台,开源Kubernetes搭建云原生服务平台,选择国内主流公有云平台服务,基于数字化平台底座,面向业务开发边缘计算云应用产品。1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛私有云平台,创建云主机进行相应答题,2名参赛选手的账号密码相同;(并设置服务开机自启。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1232

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析 目前,迭代法和强度传输方程(TIE)法是两类典型的非干涉相位检索技术(Phase Retrieval,被称为相位恢复、相位检索、相位反演法、相位复原等)。迭代法中的经典算法是Gerchberg-Saxton(GS),随后,出现了包括错误减少算法(ER)、混合输入输出法(HIO)、梯度搜索算法、角谱迭代算法等改进算法。...

简单光学 2万+

OpenStack自动化安装脚本

本文来自于微信公众号“码农这些事儿”,欢迎大家关注获取更多精彩内容! 这次分享给大家的是OpenStack的Q版All in one单节点安装脚本,按照下面步骤即可完成OpenStack的安装,除开安装操作系统的时间,整个过程仅需不到20分钟! 需要准备 创建一台虚拟机或准备一台实体机,最低配置1cpu+4gb内存+2网卡 CentOS-7-x86_64-DVD-1708.iso(微信...

塔尖草的博客 5984

FPGA实战:手把手教你用Verilog实现Modbus CRC16校验(附完整代码)

本文详细介绍了在FPGA中实现Modbus RTU协议CRC16校验模块的完整实战方案。针对硬件设计中的时序、资源与性能挑战,文章从算法原理出发,提供了清晰的Verilog模块接口、状态机设计、查表ROM实现及优化策略,并附带了完整的可综合代码与测试平台,帮助工程师高效构建稳定可靠的工业通信系统。

weixin_29164185的博客 431

数字蓝牙功放

数字蓝牙功放(TPA3110+BK8000L),基于D类数字功放芯片TPA3116蓝牙功放,HIFI级带滤波15Wx2蓝牙数字功放,支持有线和蓝牙两种音源输入

runweipa的博客 1418

openstack安装placement+脚本

可以用sed命令进行操作,修改/etc/httpd/conf.d/00-placement-api.conf配置文件。# 在openstack域中创建用户placement。# 为用户placement分配admin角色。# 创建placement用户并分配角色。# 创建placement服务及服务端点。创建placement用户并分配角色。# 初始化placement的数据库。# 安装placement放置服务。# 修改placement配置文件。# placement组件初始化。

2302_81688883的博客 883

SAP BOM批量反查代码分享

SAP BOM反查批量查询代码分享

我小时候很黑的博客 4966

OpenStack(Queens)脚本安装

1. 部署架构一台控制节点和一台计算节点组成简单架构OpenStack平台,控制节点安装MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服务,主要作为认证、镜像管理节点,以及提供Nova和Neutron服务的管理节点。提供Dashboard界面服务。计算节点主要安装nova-compute和Neutron服务,Nova服务提供云主机服务,Neutron提供网络服务。

m0_73299799的博客 993

【高级】系统架构师 | 2026年上半年案例分析真题

标准答案:系统因缺乏足够历史数据(用户行为、物品信息或评分等),难以做出准确推荐的问题。另外两种:物品冷启动(新课程 / 新知识点缺少互动数据)系统冷启动(平台上线初期整体数据稀缺)类型典型表现常见缓解用户冷启动新注册学员无历史问卷/前测、热门兜底、人口统计学特征、知识图谱前置测评物品冷启动新课无人学无人评内容特征推荐、专家标注、探索流量系统冷启动新平台双边都稀缺规则引擎、运营冷启、知识图谱强约束路径本题已点明「用户冷启动」,另外两种按推荐系统经典三分法作答即可。

大胆尝试,小心实践 358

ABAP CDS SELECT, parameters 全面解析:把参数化视图玩明白(含可运行示例)

这篇技术博客介绍了ABAP CDS中参数化视图的用法与实践。文章从业务需求出发,解释了参数化视图的必要性,并详细说明了语法规则、参数类型匹配、视图内部参数引用等关键点。重点展示了在JOIN和ASSOCIATION中传递参数的写法,提供了航线分析的完整业务案例和可运行代码示例。文章还总结了视图实体与DDIC视图的差异、会话变量使用技巧等实践要点,特别强调了JOIN中必须显式传参的语法要求。通过真实场景演示,帮助开发者掌握参数化CDS的高效应用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 358

Openstack 开发人员安装脚本解读 [stack.sh]

这是转载的ju136的专栏的文章。 http://devstack.org/ 有一份英文版的源代码解读,不过如果对于Openstack没有过接触的人来说,可能看起来会有一些困难。 http://devstack.org/stack.sh.html stack.sh 简介 stack.sh是一个openstack开发人员可以选择的一种安装脚本。 这个脚本的主要作用

兵临城下 4067

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

CentOS7一键安装openstack脚本

注意:有错误的话建议使用同款虚拟机,如果有快照再回到快照再次执行就好了,还有就是网络一定一定要正常,要不然也会有很多问题的。重启之后,建议保存一份快照,并且查看网络是否能使用,很重要很重要!刚配置好,无法使用sudo su - root,所以需要将用户加入sudoer组。我使用的是CentOS-7-x86_64-DVD-2009.iso镜像安装的。直接开启虚拟机就好了,最后使用root依次执行下面的两条命令。添加执行权限之后,使用root执行就好了。直接访问ip地址,然后输入账号密码就好了。

qq_74303140的博客 1243

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

安装openstack-glance教程 +脚本

如果发现进入数据库打不开,重启mysql服务。

2302_81688883的博客 1090

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OpenStack Keystone服务安装脚本

标题Controller #!/bin/bash install_keystone(){ #报错即刻退出 set -o errexit set -x #echo "--------------将dash修改为bash" #ls -l `which sh` #dpkg-reconfigure dash #ls -l `which sh` #sleep 5s echo "-------------...

ranweizheng的专栏 972

OpenStack安装后的验证/初始化脚本

在安装完openstack后,最急需的一件事情就是验证安装是否已经成功,这个时候需要我们尝试创建一个项目,添加一个用户,添加网络,添加镜像…… 手动通过Web UI或命令行一项一项来不光浪费时间,还容易出错。 下面的脚本自动化运行了这一过程,并且还对openstack进行了优化配置。 在RDO安装的基于GRE模式的环境中验证通过。 https://github.com/yeasy/open

yeasy的专栏 1488

Kickstarter定制OpenStack安装光盘脚本

基于CentOS 7 定制OpenStackliberty安装盘 #!/bin/sh -v sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf yum clean all yum makecache yum -y install yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo yum-config-manager --add-rep.

黑天的猩猩 436

openstack pike 单机 一键安装脚本

#!/bin/bash # openstack pike 单机 一键安装 # 环境 centos 7.4.1708 x86_64 # 更多openstack内容 http://dwz.cn/openstack # 博客blog https://www.cnblogs.com/elvi/p/7811528.html # 仅供学习测试 [[ `uname -r` = *el7* ]] && { echo '开始安装openstack pike'; } || { echo '请在CentOS7.

啊酒弟弟的博客 1017

[收藏学习]openstack脚本安装经验借鉴

看过openstack的安装脚本,但自己一直再用手动安装.在dashboard地方总是出现健全问题,检查keystone,nova总是定位不出来原因.不想拖得太久时间,也会采用脚本安装方式.这里收藏网友陈沙克的文章http://hi.baidu.com/chenshake/blog/item/4ed92d4e96768dd7d0c86a3e.html.供本人自己脚本安装参考.还是声明:...

weixin_30678821的博客 91

OpenStack及OpenNebula对比(附一键安装OpenStack脚本)

OpenStack作用: OpenStack 是一个开源的云计算平台,用于构建和管理公有云和私有云环境。它提供了一组丰富的服务,包括计算、存储、网络和身份认证等,以支持虚拟机管理、对象存储、网络连接和身份验证等功能。架构: OpenStack 采用分布式架构,由多个组件组成。以下是 OpenStack 核心组件的描述:Nova(计算服务): Nova 负责管理和调度计算资源,包括虚拟机实例的创建、...

关注微信公众号【开源Linux】,后台回复『10T』,领取10T学习资源大放送,涵盖Linux、虚拟化、容器、云计算、网络、Python、Go等书籍和视频 1900
上一篇: 树莓派自定义开机界面和登录提示
下一篇: 3D动态视频屏保热带鱼水族馆
Kennith Chang
博客等级 码龄8年 72粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值