So Tired !_! 逆水行舟, 不进则退!

11Aug/15

install salt on ubuntu/debain

Posted by Nick Xu

WHEEZY (STABLE)

For wheezy, the following line is needed in either /etc/apt/sources.list or a file in /etc/apt/sources.list.d:

deb http://debian.saltstack.com/debian wheezy-saltstack main

IMPORT THE REPOSITORY KEY.

You will need to import the key used for signing.

wget -q -O- "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key" | apt-key add -

UPDATE THE PACKAGE DATABASE

apt-get update

INSTALL PACKAGES

Install the Salt master, minion, or syndic from the repository with the apt-get command. These examples each install one daemon, but more than one package name may be given at a time:

apt-get install salt-master
apt-get install salt-minion
apt-get install salt-syndic

salt -L 'a,b,c' state.sls nginx

pillar

other link

配置主服务器和从服务器

主服务器和从服务器指的是控制器和被控制的服务器,这个主服务器本质上是中央协调中心对所有的从服务器,从服务器类似client/server配置,这里的主服务器是server,从服务器是client.

从服务器配置

在本文中,我配置salt-master和salt-minion 命令在同一台机器上,假如你在配置多台服务器,挑选其中一个为master,剩下的成为minions.根据你的需要来配置master和minion,接下来的我会解释如何配置一台服务器为master和另外的机器为minions.

Salt的配置文件在/etc/salt目录下,默认,这些文件被命名为minion和master,假如你在同一台机器安装了salt-master和salt-minion,你会看到不同的两个文件,master和minion

首先,你需要告诉你的minion怎样找到并连接你的Master服务器。即使你运行minion和Master在同一台服务器上,你仍然要告诉minion你的master在哪儿。

1,使用你最喜欢的文本编辑器,打开minion配置文件

2,取消注释行#master,移除# 替换为你的Master服务器的IP地址,应该是这样:master:你的master IP地址。(假如以上操作,在同一台服务器,此时增加 127.0.0.1)

3,命名一个昵称给你的服务器,查找到#id行,再一次移除#号,增加一个nameid:1st-salt-minion,(这个名字可以是任何字符串的)

4,为了重新加载新的配置,你需要使用sudo 重启你的salt-minion进程,-d 选项,启动salt-minion为一个后台进程,这样子的话,你可以访问您的命令行发布更多的命令。

认证 Minion Keys

现在你的minion 已经知道到master在哪里,接下来让他们进行彼此验证,Salt使用公共密钥加密来确保master和minions的安全通信。你需要通过在master端验证minion的证书来明确master和minion之间的是授信的。

认证minion的证书使用salt-key命令,Salt自动生成这些证书,你需要做的仅仅是认证你需要的证书。

1,输入salt-key -L 列出所以没有认证,认证过,拒绝认证的证书

2,你应该可以看到一个没有认证的证书1st-Salt-Minion(或者你自己选择的minion)

3,认证这个证书使用 sudo salt-key -a 1st-salt-minion

通信测试

现在你已经有了一台 salt-master和一台salt-minion,并且master和minion已经相互信任,你可以从master 使用一个test ping的命令来测试他们之间的连接。假如你的master能够连接到minion,将会返回一个"return".输入 salt '*' test.ping,它应该有如下输出:

>{1st-Salt-Minion: True}

注意,通配符 *代表所有minion,因为这里你只有一台服务器,算是一个简单的模拟测试(要比salt '1st-salt-Minion' test ping 快多了)假如你收到“True”,证明你已经成功安装和配置完成salt stack。

如果没有的话,你也许需要重启你的master和minion 不带-d参数,这样子的话,你能够获取到更多输出信息,更多的参考资料,请查看Salt 官方文档http://docs.saltstack.org/en/latest/topics/configuration.html

Salt的语法结构,包括命令,目标和动作,举个例子,* 指任何主机(* 是一个通配符),test.ping 是动作。

你可以在已经链接和信任的主机上执行任何可用的命令,关键提示:这些需要执行的命令在目标主机上必须可用,例如,如下命令:

sudo salt '*' cmd.run "service apache2 restart"

这个命令只会在已经安装了apach2e web服务器的主机上执行,另外,你也可以使用这样的命令:

sudo salt '*' cmd.run "service httpd restart"

另外一个例子,也许你想要查询你的主机已经运行了多长时间,你可以这样子做:

sudo salt '*' cmd.run "uptime"

在举另外一个例子,假如你的Apache Bench(译者注:一个apche 开源压力测试工具)安装在master上而没有安装在minion上,下面的命令:

sudo salt '*' cmd.run "ab -n 10 -c 2 http://www.google.com:80/index.html"

如果你尝试在minion上执行,你将会失败,因为Apache Bench 没有安装在minion上。

11Aug/15

burn an ISO on a USB drive on Mac OS X?

Posted by Nick Xu

Directly from the Ubuntu download page (my formatting):

  1. Download the desired file
  2. Open the Terminal (in /Applications/Utilities/ or query Terminal in Spotlight)
  3. Convert the .iso file to .img using the convert option of hdiutil (e.g., hdiutil convert -format UDRW -o ~/path/to/target.img ~/path/to/ubuntu.iso)
  4. Note: OS X tends to put the .dmg ending on the output file automatically. Remove the .dmg extension as necessary, mv ~/path/to/target.img{.dmg,}
  5. Run diskutil list to get the current list of devices
  6. Insert your flash media
  7. Run diskutil list again and determine the device node assigned to your flash media (e.g. /dev/disk2)
  8. Run diskutil unmountDisk /dev/diskN (replace N with the disk number from the last command; in the previous example, N would be 2)
  9. Execute sudo dd if=/path/to/downloaded.img of=/dev/rdiskN bs=1m (replace /path/to/downloaded.img with the path where the image file is located; for example, ./ubuntu.img or ./ubuntu.dmg).
  10. Using /dev/rdisk instead of /dev/disk may be faster.
    • If you see the error dd: Invalid number '1m', you are using GNU dd. Use the same command but replace bs=1m with bs=1M.
    • If you see the error dd: /dev/diskN: Resource busy, make sure the disk is not in use. Start the 'Disk Utility.app' and unmount (don't eject) the drive.
  11. Run diskutil eject /dev/diskN and remove your flash media when the command completes
  12. Restart your Mac and hold down Alt while the Mac is restarting to choose the USB stick

Note: On newer Macs you might have to install an EFI boot manager to boot from USB.

Tagged as: , , , , Comments Off
6Aug/15

Installing RabbitMQ Ubuntu 12.04 with PHP extension(AMQP)

Posted by Nick Xu

download from http://pecl.php.net/package/amqp

apt-get install librabbitmq0
ln -s /usr/lib/librabbitmq.so.0 /usr/local/lib/librabbitmq.so
git clone https://github.com/alanxz/rabbitmq-c rabbitmq-c
cd rabbitmq-c
cp ./librabbitmq/amqp_framing.h /usr/local/include/
cp ./librabbitmq/amqp.h /usr/local/include/

cd ../amqp-1.2.0
phpize
./configure --with-amqp
make
make test
make install
echo "extension=amqp.so" >> /etc/php5/cli/php.ini

5Aug/15

set nginx as Windows system service

Posted by Nick Xu

  1. Download the latest version of Windows Service Wrapper from here.
    • Current version as of this writing is v1.17.
  2. Rename winsw-1.xx-bin.exe to something like nginxservice.exe.
    • This is the name that will show up for the process that owns your nginx process.
  3. Place an XML file next to the exe with the same base name, e.g. nginxservice.xml. The contents should be like below (verify your nginx location).
    <service>
      <id>nginx</id>
      <name>nginx</name>
      <description>nginx</description>
      <executable>c:\nginx\nginx.exe</executable>
      <logpath>c:\nginx\</logpath>
      <logmode>roll</logmode>
      <depend></depend>
      <startargument></startargument>
      <stopargument>-s stop</stopargument>
    </service>
    
  4. Run the command nginxservice.exe install.
   
site
site