sos-ci run-docker-container.sh脚本分析
cat -n run-docker-container.sh
1 #!/bin/bash
2
3 docker ps -a | grep sos-ci-container
4 if [ $? == 0 ]; then //如果存在
5 docker rm -f sos-ci-container //删除容器
6 docker rmi sos-ci //删除镜像
7 fi
8
9 echo $PUBLIC_KEY > gerrit_pub_key
10 echo "-----BEGIN RSA PRIVATE KEY-----" > gerrit_prvt_key
11 echo $PRIVATE_KEY >> gerrit_prvt_key
12 echo "-----END RSA PRIVATE KEY-----" >> gerrit_prvt_key
13
14 chmod 600 gerrit_prvt_key
15 chmod 600 gerrit_pub_key
16
17 ./set-env-to-vars.sh
18
19 docker build --no-cache -t sos-ci --memory-swap -1 . //用当前目录下的Dockerfile创建镜像,--no-cache不缓存,默认是false, -t : 仓库名称应用于产生的镜像, --memory-swap: 有限的值等于内存加交换分区。
20
21 #docker build -t sos-ci .
22
23 docker run -d --name sos-ci-container sos-ci //在新的容器中运行一个命令,-d : detached mode: 在后台运行容器并打印出新的容器ID,默认是false。--name: 容器名称,最后sos-ci是镜像名称。
24
下面的脚本作用是替换脚本中的用户名与密码等信息。
sos-ci git:(master) cat -n set-env-to-vars.sh
1 #!/bin/bash
2
3 conf_file="sos-ci.yaml"
4 password_file="sos-ci/ansible/password.txt"
5 dockerfile="Dockerfile"
6 creating_template="create-template.sh"
7 creating_sos_vm="create-sos-vm.sh"
8 sos_ci_vars="sos-ci/ansible/group_vars/all.yml"
9
10 f_sed() {
11 sed -i "s|$1|$2|g" $3 > /dev/null 2>&1
12 }
13 set "$conf_file" "$password_file" "$dockerfile" "$creating_template" "$creating_sos_vm" "$sos_ci_vars" //设置shell变量
14 for i //对shell变量遍历
15 do
16 f_sed VSPHERE_HOST_IP $vsphere_host $i
17 f_sed VSPHERE_USER $vsphere_user $i
18 f_sed VSPHERE_PASSWORD $vsphere_password $i
19 f_sed VSPHERE_ESXI $esxi_host $i
20 f_sed VSPHERE_DATACENTER $datacenter $i
21 f_sed VSPHERE_DATASTORE $datastore $i
22 f_sed AWS_ACCESS_KEY $aws_access_key $i
23 f_sed AWS_SECRET_KEY $aws_secret_key $i
24 f_sed AWS_REGION $aws_region $i
25 f_sed INSTANCE_NAME $vm_name $i
26 f_sed TEMPEST_INSTANCE_PASSWORD $template_pass $i
27 f_sed LOCALHOST_PASS $localhost_pass $i
28 f_sed HOME_DIR $sos_ci_home_dir $i
29 f_sed ANSIBLE_DIR $sos_ci_ansible_dir $i
30 f_sed REPO_LOCATION $sos_ci_repo_location $i
31 f_sed LOG_DIR $sos_ci_log_dir $i
32 f_sed STAGE $stage $i
33 f_sed TEST_IT_PATCH_NUM $test_it_patch_num $i
34 done