标签:进程 des load lib localhost 发布 nec txt 用户名
转自 https://www.cnblogs.com/guxiong/p/7218717.html 4 配置ssh登录 4.1 由于ansible使用的登陆方式是ssh所以,在做实验的两台主机需要配置ssh秘钥对,这样ansible才能正常使用。 服务端:192.168.186.131 客户端:192.168.186.130 在131的主机上,执行: # ssh-keygen -t rsa 直接回车即可,不用设置密钥密码。 然后将公钥(id_rsa.pub)拷贝到130的机器上: # ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.186.130 这个命令就能生成authorized_keys文件的,没必要一个一个无复制.pub文件,那样反而麻烦容易错误的 本机131也要操作: # cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys # chmod 600 /root/.ssh/authorized_keys 在131和130的机器上关闭selinux # setenforce 0 在131的机器测试ssh是否可以登录: # ssh 192.168.186.130 成功登录130的机器。 4.2 修改ansible的hosts文件 在131的机器: # vim /etc/ansible/hosts 在末尾添加: [testhosts] # testhosts 是服务器组的名字,用来统一管理服务器 127.0.0.1 gx.com #gx.com是192.168.186.130 这台服务器,当然,这里可以直接写IP地址。 如果写成域名的形式,则需要修改一下dns的指向或者/etc/hosts ,让dns可以找到gx.com的IP指向了哪个服务器。 修改 # vim /etc/hosts 加入:192.168.186.130 gx.com 4.3 进行远程连接测试 4.3.1 执行w命令,查看服务器的状态: [root@kube-node3 ~]# ansible testhosts -m command -a ‘w‘ 127.0.0.1 | success | rc=0 >> 10:50:30 up 1:56, 2 users, load average: 0.36, 0.51, 0.61 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.0.100 09:21 6.00s 0.73s 0.00s ssh -C -tt -q -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 192.168.0.73 /bin/sh -c ‘LANG=C LC_CTYPE=C /usr/bin/python /root/.ansible/tmp/ansible-tmp-1538448630.09-277626884223308/command; rm -rf /root/.ansible/tmp/ansible root pts/3 localhost 10:50 0.00s 0.10s 0.01s w 192.168.0.73 | success | rc=0 >> 10:50:30 up 1:57, 2 users, load average: 0.95, 1.08, 1.11 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.0.100 09:47 19:26 0.06s 0.03s -bash root pts/1 kube-node3 10:50 0.00s 0.10s 0.01s w 4.3.2 ansible拷贝文件或者目录 在服务端创建文件 # vi /tmp/test.sh #!/bin/bash echo `date` > /tmp/ansible_test.txt 利用ansible可以方便地将本地的目录或者文件同步到远程服务器,具体命令: # ansible testhosts -s -m copy -a ‘src=/tmp/test.sh dest=/tmp/test.sh mode=0755‘ 复制结果: [root@kube-node3 ~]# ansible testhosts -s -m copy -a ‘src=/tmp/test.sh dest=/tmp/test.sh mode=0755‘ 192.168.0.73 | success >> { "changed": false, "dest": "/tmp/test.sh", "gid": 0, "group": "root", "md5sum": "8dabdb8b0f1ce4b8979260a7a84efb4b", "mode": "0755", "owner": "root", "path": "/tmp/test.sh", "size": 50, "state": "file", "uid": 0 } 127.0.0.1 | success >> { "changed": false, "dest": "/tmp/test.sh", "gid": 0, "group": "root", "md5sum": "8dabdb8b0f1ce4b8979260a7a84efb4b", "mode": "0755", "owner": "root", "path": "/tmp/test.sh", "size": 50, "state": "file", "uid": 0 } 然后,可以批量执行该脚本: [root@kube-node3 ~]# ansible testhosts -m shell -a ‘/tmp/test.sh‘ 192.168.0.73 | success | rc=0 >> 127.0.0.1 | success | rc=0 >> 已经创建了/tmp/ansible_test.txt文件了,并在该文件中成功写入了结果。测试成功 4.3.3 ansible实现远程任务执行 利用ansible的cron模块,给远程的服务器批量增加任务计划 每个星期天都重新创建一个文件/tmp/day.txt [root@kube-node3 ~]# ansible testhosts -m cron -a "name=‘testday cron‘ job=‘/bin/touch /tmp/day.txt‘ weekday=6" 127.0.0.1 | success >> { "changed": true, "jobs": [ "testday cron" ] } 192.168.0.73 | success >> { "changed": true, "jobs": [ "testday cron" ] } 如果想要删除任务计划,只需增加state=absent,如下图,已经将刚刚添加的任务删除了 [root@kube-node3 ~]# ansible testhosts -m cron -a "name=‘testday cron‘ state=absent" 127.0.0.1 | success >> { "changed": true, "jobs": [] } 192.168.0.73 | success >> { "changed": true, "jobs": [] } 生产环境中jenkins主机ansible配置如下: [defaults] hostfile = ./hosts library = /usr/share/ansible remote_tmp = $HOME/.ansible/tmp pattern = * transport = smart remote_port = 22 log_path = /home/jenkins/ansible/ansible.log pipelining = True module_lang = C gathering = implicit host_key_checking = False sudo_exe = sudo timeout = 10 ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host} action_plugins = /usr/share/ansible_plugins/action_plugins callback_plugins = /usr/share/ansible_plugins/callback_plugins connection_plugins = /usr/share/ansible_plugins/connection_plugins lookup_plugins = /usr/share/ansible_plugins/lookup_plugins vars_plugins = /usr/share/ansible_plugins/vars_plugins filter_plugins = /usr/share/ansible_plugins/filter_plugins [paramiko_connection] [ssh_connection] [accelerate] accelerate_port = 5099 accelerate_timeout = 30 accelerate_connect_timeout = 5.0 accelerate_daemon_timeout = 30 主要配置项有: hostfile:指定ansible inventory文件路径,默认路径为/etc/ansible/hosts,生产环境Jenkins主机已修改为./hosts,也可以在使用ansible或ansible-playbook命令时通过-i参数指定其路径。 log_path:指定日志文件。 remote_port:指定连接远程主机的默认端口。 4 ansible使用 Ansible常用命令有三个:ansible ansible-playbook ansible-doc 4.1 ansible用法 首先是集群hosts列表的配置。如下: root@localhost[/home/centos/ansible-demo]cat hosts [bpm:children] bpm57 bpm58 [bpm57] 192.168.100.57 ansible_ssh_user=bpm ansible_ssh_pass=******Zhang [bpm58] 192.168.100.58 ansible_ssh_user=bpm ansible_ssh_pass=*******Zhang [110] 192.168.100.110 ansible_ssh_user=yangsw ansible_ssh_pass=bs bsP******** [64] 192.168.100.64:2202 ansible_ssh_user=yangsw ansible_ssh_pass=bsP******** 其中,中括号(类似[110])表示一个节点组,下面每行表示一个节点,一个节点组可以包括多个节点,也可以通过指定children节点组(类似[bpm:children])将多个节点组组成一个新的组,hosts文件中每行需要指定的有ip:port(端口也可以通过ansible_ssh_port=22来指定,默认为配置文件中remote_port的值) 远程主机用户名 远程主机密码(配置为免密登陆则不用指定)。 密码中如果包含$ ” ‘ \ 字符时,需要进行转义。 Ansible命令:ansible host_clluster -m 模块 -a 命令 -m:指定模块 -a:指定模块参数 -i:指定inventory路径(hosts文件位置) -e:指定变量 -f :指定并行进程数,默认5 root@localhost[/home/centos/ansible-demo]ansible bpm -m shell -a"pwd" 192.168.100.58 | SUCCESS | rc=0 >> /home/bpm 192.168.100.57 | SUCCESS | rc=0 >> /home/bpm Ansible 常用模块有file shell command copy template fetch script croon ping等 可以使用ansible-doc -l查看ansible都有哪些模块及各个模块功能,模块具体用法可以使用ansible-doc命令查看,如file模块可以使用ansible-doc file查看。 4.2 ansible-playbook playbook简单的说就是定义一个配置文件,文件中写入你需要安装的服务,配置文件,变量等信息,使他们可以按照事先定义好的机制完成一个任务。Playbook使用YAML语法结构,所以配置阅读起来都比较简单。 Playbooks常用参数: hosts:指定远程主机组 vars:定义所用到的变量,可以使用变量名:变量值的方式,也可使用var_files指定存放变量的文件。 Ansible变量命名规则:变量由字母、数字、下划线组合而成,且必须以字母开头。 roles: ansible的roles用于层次性、结构化地组织palybook。roles能够根据层次型结构自动装载变量文件、tasks及handlers等。 tasks:指定要执行的任务列表。 如下为mzone发布的一个简单的playbook: Playbook文件一般命名成.yml形式,hosts指定要操作的远程主机组,可以用变量表示,ansible中以双花括号{{ }}的形式表示变量,变量值可以在执行命令时通过-e参数指定,如:ansilbe-playbook deploy_mzone.yml -e”host_cluster=web” Tasks表示要执行的操作,-name指定执行playbook该语句时在屏幕上显示的信息,为提示信息。copy 以及 shell 为要执行的模块,冒号后面跟模块所需指定的参数。 Ansible-playbook常用到的还有template模块,用法与copy模块相似,不同的是template模块可以使用变量,其与copy模块的区别在于,拷贝到远程可以替换src文件中变量的值。
标签:进程 des load lib localhost 发布 nec txt 用户名
原文地址:https://www.cnblogs.com/effortsing/p/10012079.html