• Ansible安装配置


    http://www.unixmen.com/ansible-install-configure-and-use/

    Our goals is install, configure and use Ansible software in Ubuntu 14.04 x64. With this software you can control and manage a lot of Linux/UNIX servers as puppet from management server. The difference is puppet is written with Ruby but, ansible is written with Python programming language. Commands in puppet and ansible is different but global scheme is the same. One big difference is ansible using SSH key for authorization on client machines (puppet is install agents on client machines) and all configurations going through ssh. For that, before all you must generate SSH key on master server and send public key for all client machines.

    In our configuration we will use 5 servers. They are ansmaster and node1ansnode2ans,node3ansnode4ans.

    Our network topology will be as following:
    Ansible-Topology

    Firstly we must install and configure master server ansmaster.unixmen.com

    Update, install repositories/packages and install new repositories for ansible.

    root@ansmaster:~# apt-get update
    root@ansmaster:~# apt-get dist-upgrade

    root@ansmaster:~# apt-add-repository ppa:ansible/ansible -y
    gpg: keyring `/tmp/tmpwvqe7axu/secring.gpg’ created
    gpg: keyring `/tmp/tmpwvqe7axu/pubring.gpg’ created
    gpg: requesting key 7BB9C367 from hkp server keyserver.ubuntu.com
    gpg: /tmp/tmpwvqe7axu/trustdb.gpg: trustdb created
    gpg: key 7BB9C367: public key “Launchpad PPA for Ansible, Inc.” imported
    gpg: Total number processed: 1
    gpg:               imported: 1  (RSA: 1)
    OK

    root@ansmaster:~# apt-get update && sudo apt-get install ansible -y

    Look at ansible version.
    root@ansmaster:~# ansible –version
    ansible 1.9.4
    configured module search path = None

    Create key on our ansmaster server.
    root@ansmaster:~# ssh-keygen -t rsa -b 4096 -C “ansmaster@unixmen.com”
    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:
    45:7a:75:d1:2e:24:c6:2e:35:1a:d3:ac:e3:4a:54:f9 ansmaster@unixmen.com
    The key’s randomart image is:
    +–[ RSA 4096]—-+
    |          .=. oo |
    |         o=.O.. .|
    |        ..oX + . |
    |        .o= E . .|
    |       .S. o   . |
    |        . .      |
    |       . .       |
    |        .        |
    |                 |
    +—————–+

    Copy already created pubic key to other servers with scp command.

    Note: First time in yours ansmaster server you must try to connect with ssh to localhost, after write yes and click to Enter button(after that you can break connection with Ctrl+C). This will automatically create ~/.ssh folder. We need this is for known_hosts file. When you first time try to connect to any machines, automatically creates ~/.ssh folder and~/.ssh/known_hosts file. We must do this operation on all client nodes too.
    root@ansmaster:/root/.ssh# ssh node1ans
    root@ansmaster:/root/.ssh# ssh node2ans
    root@ansmaster:/root/.ssh# ssh node3ans
    root@ansmaster:/root/.ssh# ssh node4ans

    For description we will copy public key with our hostname:
    root@ansmaster:~# cd /root/.ssh/
    root@ansmaster:/root/.ssh# cp id_rsa.pub `hostname`.id_rsa.pub

    Copy pubic key from ansmaster server with scp command to all client machines ~/.sshfolder (On Ubuntu client machine you must firstly copy to user home folder and after from sudo user copy this key to /root/.ssh folder):
    root@ansmaster:/root/.ssh# scp ansmaster.id_rsa.pub jamal@node1ans:/home/jamal/
    root@ansmaster:/root/.ssh# scp ansmaster.id_rsa.pub root@node2ans:/root/.ssh/
    root@ansmaster:/root/.ssh# scp ansmaster.id_rsa.pub root@node3ans:/root/.ssh/
    root@ansmaster:/root/.ssh# scp ansmaster.id_rsa.pub root@node4ans:/root/.ssh/

    Then you must copy this key to authorized_keys file in the ~/.ssh/ folder(Before that go to the /root/.ssh folder on all client machines):
    root@node1ans:/# cd /root/.ssh/
    root@node1ans:/root/.ssh# cat ansmaster.id_rsa.pub >> authorized_keys

    [root@node2ans ~]# cd /root/.ssh/
    [root@node2ans .ssh]# cat ansmaster.id_rsa.pub >> authorized_keys

    [root@node3ans ~]# cd /root/.ssh/
    [root@node3ans .ssh]# cat ansmaster.id_rsa.pub >> authorized_keys

    root@node4ans:~ # cd /root/.ssh/
    root@node4ans:~/.ssh # cat ansmaster.id_rsa.pub >> authorized_keys

    Create client nodes.
    Firstly we will create node1ans.unixmen.com.

    Update repositories for Ubuntu node1ans:
    root@node1ans:~# apt-get update && apt-get dist-upgrade -y

    Update repositories for CentOS node2ans and node3ans:
    [root@node2ans ~]# yum upgrade -y

    Note: On CentOS7 servers if you will choose Basic server, there are will not network utilities. You must install them.
    [root@node2ans ~]# yum install net-tools -y

    Note: On CentOS7 servers disable SeLinux and Firewall. We will change the line asSELINUX=disabled in node2ans and node3ans servers /etc/selinux/configconfiguration file(reboot after changes).
    [root@node2ans ~]# systemctl disable firewalld
    rm ‘/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service’
    rm ‘/etc/systemd/system/basic.target.wants/firewalld.service’

    [root@node2ans ~]# systemctl stop firewalld

    [root@node3ans ~]# systemctl disable firewalld
    [root@node3ans ~]# systemctl stop firewalld

    For FreeBSD client machine update repositories:
    root@node4ans:~ # portsnap fetch extract update

    Answer yes for all questions:
    root@node4ans:~ # pkg update
    root@node4ans:~ # pkg upgrade

    Install Python27 from the ports:
    root@node4ans:~ # cd /usr/ports/lang/python27
    root@node4ans:~ # make config
    ansible-freebsd-python
    root@node4ans:~ # make -DBATCH install

    root@node4ans:~ # rehash
    root@node4ans:~ # which python2.7
    /usr/local/bin/python2.7
    root@node4ans:~ # ln -s /usr/local/bin/python2.7 /usr/bin/python

    Create ansible automatization
    We will create two group of servers. all – all servers will be here and webservers – only web servers will be here. Configurations will be in the /etc/ansible/hosts file as following:
    root@ansmaster:~# cat /etc/ansible/hosts | grep -v “#” | grep -v ‘^$’
    [all]
    node1ans.unixmen.com
    node2ans.unixmen.com
    node3ans.unixmen.com
    node4ans.unixmen.com

    [webservers]
    node2ans.unixmen.com
    node3ans.unixmen.com

    For example with -m(define the using module) option we will use ping module and send ping to all members of “webservers” and “all” groups. You can get list of all modules from the http://docs.ansible.com/ansible/list_of_all_modules.html official page.
    root@ansmaster:~# ansible -m ping webservers
    node3ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    node2ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    root@ansmaster:~# ansible -m ping all
    node4ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    node3ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    node2ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    node1ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    With command module you can send system commands to all client machines:
    root@ansmaster:~# ansible -m command -a “uptime” all

    With SHELL module you can send system commands to all client machines:
    root@ansmaster:~# ansible -m shell -a “hostname” all
    node1ans.unixmen.com | success | rc=0 >>
    node1ans

    node3ans.unixmen.com | success | rc=0 >>
    node3ans.unixmen.com

    node2ans.unixmen.com | success | rc=0 >>
    node2ans.unixmen.com

    node4ans.unixmen.com | success | rc=0 >>
    node4ans.unixmen.com

  • 相关阅读:
    受益一生的15个学习习惯
    如何在工作的头三年里让自己变得强大
    linux定时执行脚本
    SpringMVC基础入门
    Spring与Quartz的整合实现定时任务调度[转]
    强肝保肝养肝4大食物
    Spring官网jar包下载方法
    tomcat管理端的页面安全措施
    Struts2 Action 动态传参数
    Java之控制反转和依赖注入
  • 原文地址:https://www.cnblogs.com/itech/p/5235376.html
Copyright © 2020-2023  润新知