読者です 読者をやめる 読者になる 読者になる

シンギュラリティまであと何日

メモ Python

シンギュラリティが起こるとされる、2045年まであと28年。
28 * 365 = 10220
なので、あと1万日くらい。 キリのいい数字だったので、今日から何日後なのか調べてみた。
あと、ちょうど10000日の日付も調べてみた。

Python

from time import time, mktime
from datetime import datetime, timedelta

# calculate remaining days to the year 2045
ts = time()
print datetime.fromtimestamp(ts).strftime('%Y/%m/%d %H:%M:%S')

ts_xday = mktime(datetime.strptime('2045/1/1', '%Y/%m/%d').timetuple())
delta1 = timedelta(seconds=(ts_xday - ts))
print delta1

# when is the date which 10000 days remain.
ts10000 = ts_xday - timedelta(days=10000).total_seconds()
print datetime.fromtimestamp(ts10000).strftime('%Y/%m/%d')
2017/03/26 23:22:52
10142 days, 0:37:07.029797
2017/08/16

結果は、2017/03/26 からだと、あと10142日だった。
ちょうど10000万日になるのは2017/08/16

https://ideone.com/KD3VfS

2038年問題

codepadというサイトで実行したら、エラーになった。

http://codepad.org/aK8hiSUs

http://codepad.org/hPRC7LhS

メモ

Wikipediaを見たらシンギュラリティの予測は、2029年になったと書いてあった。
技術的特異点 - Wikipedia

レイ・カーツワイルは、技術的特異点論者として2017年3月10日から2017年3月19日にかけて米国テキサス州で開催されたSXSW Conferenceに登壇した。その議論の中で、技術開発の進捗が2005年当時の予測より早くなっているとして、技術的特異点の到来が2029年に早まるとの見方を示した。[3]

sudo関連のメモ

AWS Linux

visudo

visudo コマンドで編集するファイルは、
/etc/sudoers

ubuntuでsudoできるようにする設定

dockerコンテナで作業。
Ubuntu 16.04.2 LTS

実行するコマンド

useradd -m user1
echo 'user1:pass1' | chpasswd
usermod -aG sudo user1

Dockerfileに書く場合

RUN useradd -m user1 && \
    echo 'user1:pass1' | chpasswd
RUN usermod -aG sudo user1

sudoというグループに追加するだけでsudoできるようになるのは、
/etc/sudoers

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

と書かれているから(だと思う)。
CentOS 6 だと書かれてなかった。

https://sites.google.com/site/teyasn001/home/sudo

amazon linux ec2-user no password

AWSのAmazonLinux 、ubuntu で初期ユーザーのsudoでパスワードが不要なのは、
/etc/sudoers.d/cloud-init

user ALL = NOPASSWD: ALL
と書かれているからだった。

/etc/sudoers の最後に /etc/sudoers.d の中のファイルを include してるっぽい記述がある。

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

初期アカウントがパスワード無しでsudo出来るのが気持ち悪いという貴方へ – サーバーワークスエンジニアブログ

Amazon EC2にSudoユーザーを追加する。 - Qiita

/etc/sudoers
/etc/sudoers.d/cloud-init

cloud-init

sudoとはあまり関係なさそうだけど cloud-init の記事。
http://dev.classmethod.jp/cloud/aws/cloud-init-cfg/

http://inokara.hateblo.jp/entry/2015/11/14/105727

MacのTerminalでマウスのスクロールが履歴表示になる

メモ MacOS

OS X Yosemite
Version 10.10.5

Terminalを使っているとマウスのスクロールが、
画面のスクロールではなくて、コマンドの入力履歴になることがある。
Shiftキーを押しながらスクロールで、画面スクロールと入力履歴のスクロールを切り替えられた。

メニューバーの
Terminal -> Preferences -> Profiles -> Keyboard -> Scroll Alternate screen
でも切り替えられる。

https://superuser.com/questions/912986/how-to-use-the-mouse-to-scroll-up-down-in-macos-yosemite-terminal-when-vi-is-ope

メモ

この件を調べていたら見つけたGoogleMapの小技
https://iritec.jp/selfhack/9775/

CentOS7 通常ユーザーでdockerコマンドを実行

docker Linux CentOS

VirtualBoxにCentOS7をインストールして、Dockerを動かしてみた。
rootでdockerを入れて、通常ユーザーで、docker コマンドを実行しようとしたらエラーが出た。

$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

http://unix.stackexchange.com/questions/252684/why-am-i-getting-cannot-connect-to-the-docker-daemon-when-the-daemon-is-runnin

rootで実行。

# groupadd docker
# usermod -aG docker user1
# systemctl restart docker

groupadd docker して、再起動(systemctl restart docker)したら、
/var/run/docker.sock
のグループがdockerになった。

You may have to log out and log back in again

通常ユーザーのコンソールで再ログイン。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              67591570dd29        9 weeks ago         191.8 MB

動いた。

version

$ docker version
Client:
 Version:         1.12.5
 API version:     1.24
 Package version: docker-common-1.12.5-14.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      047e51b/1.12.5
 Built:           Mon Jan 23 15:35:13 2017
 OS/Arch:         linux/amd64

Server:
 Version:         1.12.5
 API version:     1.24
 Package version: docker-common-1.12.5-14.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      047e51b/1.12.5
 Built:           Mon Jan 23 15:35:13 2017
 OS/Arch:         linux/amd64
cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 

メモ

http://qiita.com/tubone/items/9c1b3d807197b7162fd9

sudo usermod -aG dockerroot user1
sudo chown root:dockerroot /var/run/docker.sock

http://qiita.com/kumagi/items/720d4f6daefc789ca346

gitリポジトリのサイズを減らしたときのメモ

Linux メモ

結果

↓こんな感じでやったらうまくいった。

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch \
aaa/bbb/ccc.swf \
aaa/bbb/ddd.swf \
aaa/bbb/eee.swf \
cdn_server/' \
--prune-empty --tag-name-filter cat -- --all

git gc --prune=now
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --prune=now

push

サイズが減った後のoriginへのpush

git push origin --force --all
git push origin --force --tags

http://stevelorek.com/how-to-shrink-a-git-repository.html

参考にしたURL

https://confluence.atlassian.com/bitbucket/reduce-repository-size-321848262.html

http://easyramble.com/git-filter-branch.html

https://git-scm.com/book/ja/v1/Git%E3%81%AE%E5%86%85%E5%81%B4-%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AA%E3%82%AB%E3%83%90%E3%83%AA

http://stackoverflow.com/questions/10656794/why-do-large-files-still-exist-in-my-packfile-after-scrubbing-them-with-filter

http://dskd.jp/archives/46.html

ハマりポイント4つ メモ

  • ファイルパスが間違っていると、当然、消えない。

git filter-branchを実行するとヒットしなくても処理が行われてる風な出力がある。でもサイズは減らない。

  • git filter-branch をしたら最初に git gc –prune=now を実行する。

atlassianの記事やstackoverflowの回答だと、
最後にgit gc –prune=nowするだけで良さそうだけど、
試しに、小さいgitリポジトリを作って試したら、
git gc –prune=nowをやらないと
.git/objects/ の中が空だった。
空のままで、

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all

をやっても効果がないっぽい。

  • 最後に – –all を付ける。 git filter-branch –index-filter ‘git rm –cached –ignore-unmatch test1.swf’ –prune-empty – –all のように、最後に
    – –all を付ける。
    これをやらないと、別のブランチでログが残ったままになってリポジトリサイズが減らない。

  • –tag-name-filter cat を付ける。

git filter-branch –index-filter ‘git rm –cached –ignore-unmatch \ test1.swf \ test2.swf \ test3.swf’ \ –prune-empty –tag-name-filter cat – –all のように、
–tag-name-filter cat
を付ける。 これをやらないとタグのログが残ってリポジトリサイズが減らない。

Ref 'refs/tags/1.7.12' was rewritten
WARNING: You said to rewrite tagged commits, but not the corresponding tag.
WARNING: Perhaps use '--tag-name-filter cat' to rewrite the tag.

サイズが減らないときの確認方法

git log aabbcc.swf  

で、gitログを見て、履歴があったら、そもそもログから消えていない。git filter-branchがうまくいっていない。

git_find_big.sh
で表示されていたら .git/objects/ の中にデータが残っている。

du -hs .
du  .git/objects/

履歴を消したファイルをコピーして元に戻す

git rm --cached  test1.txt

のようにするとファイルは消えないけど、
git filter-branch の中で–cached を付けてもファイルが消える。

git filter-branch --index-filter 'git rm --cached --ignore-unmatch test1.txt' --prune-empty --tag-name-filter cat -- --all

今回はバイナリファイルの履歴を消したいだけだったので、
消えたファイルは、バックアップしていた同じリポジトリから、cpコマンドでコピーする。

Ansible --start-at-task

Python

Ansible には –start-at-task という、
指定したタスクから開始するオプションがあるけどうまく動かない。

https://github.com/ansible/ansible/issues/11692

deploy% touch ansible.cfg
deploy% vi ansible.cfg

[defaults]
task_includes_static = True
handler_includes_static = True
% ansible-playbook -i inventory/hosts/localvm playbook/deploy.yml --start-at-task="Display all variables/facts known for a host"

で途中から実行できた。

TASK [carlosbuenosvinos.ansistrano-deploy : Display all variables/facts known for a host] ***
ok: [192.168.3.43] => {
    "hostvars[inventory_hostname]": {
        "ansible_all_ipv4_addresses": [
            "192.168.3.43"
...

メモ

https://github.com/ansible/ansible/issues/4561

roleを指定しているとダメだというチケットがあったので、
| で区切って指定したけど動かなかった。

–start-at-task=“carlosbuenosvinos.ansistrano-deploy : Display all variables/facts known for a host”
–start-at-task=“carlosbuenosvinos.ansistrano-deploy | Display all variables/facts known for a host”

ansibleを2.1.0 から ansible-2.2.1.0 にしてもansible.cfgを書かないと–start-at-taskは動かなかった。

ansible をアップグレードしようとしたらエラー

MacOS Python

pip install –upgrade ansible でエラー。

pip install --upgrade ansible
Collecting ansible
  Downloading ansible-2.2.1.0.tar.gz (2.5MB)
    100% |################################| 2.5MB 404kB/s 


  build/temp.macosx-10.10-x86_64-2.7/_openssl.c:1107:27: error: unknown type name 'EVP_PKEY_CTX'
  int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *);
                            ^
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  20 errors generated.
  error: command 'clang' failed with exit status 1
  
  ----------------------------------------
  Failed building wheel for cryptography
  Running setup.py clean for cryptography



    creating build/temp.macosx-10.10-x86_64-2.7/build/temp.macosx-10.10-x86_64-2.7
    clang -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/kubotad/.pyenv/versions/2.7.9/include/python2.7 -c build/temp.macosx-10.10-x86_64-2.7/_openssl.c -o build/temp.macosx-10.10-x86_64-2.7/build/temp.macosx-10.10-x86_64-2.7/_openssl.o
    build/temp.macosx-10.10-x86_64-2.7/_openssl.c:680:30: error: expected function body after function declarator
    typedef LHASH_OF(CONF_VALUE) Cryptography_LHASH_OF_CONF_VALUE;
                                 ^
    build/temp.macosx-10.10-x86_64-2.7/_openssl.c:886:5: error: expected ')'
    DH *DHparams_dup(DH *);
        ^
    /usr/include/openssl/dh.h:164:25: note: expanded from macro 'DHparams_dup'
    #define DHparams_dup(x) ASN1_dup_of_const(DH,i2d_DHparams,d2i_DHparams,x)
                            ^


Command "/Users/kubotad/.pyenv/versions/app1/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-build-UehdPg/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-bUFtd6-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/kubotad/.pyenv/versions/app1/include/site/python2.7/cryptography" failed with error code 1 in /private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-build-UehdPg/cryptography/

↑このコマンドは、後で気づいたけど
/Users/kubotad/PycharmProjects/app1/.python-version
というファイルがある場所で実行した。
なので、pyenvの中のpythonバージョンで実行されている。

sudoでやってみても失敗。

sudo pip install --upgrade ansible
Password:
The directory '/Users/kubotad/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/kubotad/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.


                        ^
    build/temp.macosx-10.10-x86_64-2.7/_openssl.c:1107:27: error: unknown type name 'EVP_PKEY_CTX'
    int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *);
                              ^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    20 errors generated.
    error: command 'clang' failed with exit status 1
    
    ----------------------------------------
Command "/Users/kubotad/.pyenv/versions/app1/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-E79wWq/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-wAEgKs-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/kubotad/.pyenv/versions/app1/include/site/python2.7/cryptography" failed with error code 1 in /private/tmp/pip-build-E79wWq/cryptography/

↓このコマンドは多分ホームディレクトリで実行した。

% pip install --upgrade ansible     
Downloading/unpacking ansible
  Downloading ansible-2.2.1.0.tar.gz (2.5MB): 2.5MB downloaded
  Running setup.py (path:/private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip_build_kubotad/ansible/setup.py) egg_info for package ansible



    changing mode of /Users/kubotad/.pyenv/versions/2.7.9/bin/ansible-pull to 755
    changing mode of /Users/kubotad/.pyenv/versions/2.7.9/bin/ansible-vault to 755
  Running setup.py install for PyYAML
    checking if libyaml is compilable
    clang -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/kubotad/.pyenv/versions/2.7.9/include/python2.7 -c build/temp.macosx-10.10-x86_64-2.7/check_libyaml.c -o build/temp.macosx-10.10-x86_64-2.7/check_libyaml.o
    build/temp.macosx-10.10-x86_64-2.7/check_libyaml.c:2:10: fatal error: 'yaml.h' file not found
    #include <yaml.h>
             ^
    1 error generated.
    
    libyaml is not found or a compiler error: forcing --without-libyaml
    (if libyaml is installed correctly, you may need to
     specify the option --include-dirs or uncomment and
     modify the parameter include_dirs in setup.cfg)
    
  Found existing installation: setuptools 7.0
    Uninstalling setuptools:
      Successfully uninstalled setuptools
  Running setup.py install for pycrypto
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/setuptools/__init__.py", line 10, in <module>
        from six.moves import filter, map
    ImportError: No module named six.moves
    Complete output from command /Users/kubotad/.pyenv/versions/2.7.9/bin/python2.7 -c "import setuptools, tokenize;__file__='/private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip_build_kubotad/pycrypto/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-ijhgF2-record/install-record.txt --single-version-externally-managed --compile:
    Traceback (most recent call last):

  File "<string>", line 1, in <module>

  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/setuptools/__init__.py", line 10, in <module>

    from six.moves import filter, map

ImportError: No module named six.moves

----------------------------------------
Cleaning up...
Command /Users/kubotad/.pyenv/versions/2.7.9/bin/python2.7 -c "import setuptools, tokenize;__file__='/private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip_build_kubotad/pycrypto/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-ijhgF2-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip_build_kubotad/pycrypto
Storing debug log for failure in /Users/kubotad/.pip/pip.log
~% pip install six
Downloading/unpacking six
  Downloading six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six
Successfully installed six
Cleaning up...
~% pip install setuptools
Requirement already satisfied (use --upgrade to upgrade): setuptools in ./.pyenv/versions/2.7.9/lib/python2.7/site-packages
Cleaning up...
[kubotad@Kubotads-iMac](19:34:07)~% 

Ansibleの修復

関連パッケージを変えたので試しに、ansible のバージョンを確認したらエラー。壊れた。

~% ansible --version
ERROR! Unexpected Exception: No module named markupsafe
the full traceback was:

Traceback (most recent call last):
  File "/Users/kubotad/.pyenv/versions/2.7.9/bin/ansible", line 80, in <module>
    from ansible.cli.adhoc import AdHocCLI as mycli
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/cli/adhoc.py", line 28, in <module>
    from ansible.executor.task_queue_manager import TaskQueueManager
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py", line 29, in <module>
    from ansible.executor.play_iterator import PlayIterator
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/executor/play_iterator.py", line 30, in <module>
    from ansible.playbook.block import Block
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/playbook/__init__.py", line 27, in <module>
    from ansible.playbook.play import Play
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/playbook/play.py", line 27, in <module>
    from ansible.playbook.base import Base
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/playbook/base.py", line 29, in <module>
    from jinja2.exceptions import UndefinedError
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/jinja2/__init__.py", line 33, in <module>
    from jinja2.environment import Environment, Template
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/jinja2/environment.py", line 13, in <module>
    from jinja2 import nodes
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/jinja2/nodes.py", line 19, in <module>
    from jinja2.utils import Markup
  File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/jinja2/utils.py", line 531, in <module>
    from markupsafe import Markup, escape, soft_unicode
ImportError: No module named markupsafe
[kubotad@Kubotads-iMac](19:34:36)~% 
% pip install markupsafe
Downloading/unpacking markupsafe
  Downloading MarkupSafe-0.23.tar.gz
Cleaning up...
setuptools must be installed to install from a source distribution
Storing debug log for failure in /Users/kubotad/.pip/pip.log
% pip install -U pip
Downloading/unpacking pip from https://pypi.python.org/packages/b6/ac/7015eb97dc749283ffdec1c3a88ddb8ae03b8fad0f0e611408f196358da3/pip-9.0.1-py2.py3-none-any.whl#md5=297dbd16ef53bcef0447d245815f5144
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB): 1.3MB downloaded
Installing collected packages: pip
  Found existing installation: pip 1.5.6
    Uninstalling pip:
      Successfully uninstalled pip
Successfully installed pip
Cleaning up...
[kubotad@Kubotads-iMac](19:39:23)~% 
[kubotad@Kubotads-iMac](19:39:24)~% 
[kubotad@Kubotads-iMac](19:39:24)~% pip install setuptools
Requirement already satisfied: setuptools in ./.pyenv/versions/2.7.9/lib/python2.7/site-packages
Requirement already satisfied: six>=1.6.0 in ./.pyenv/versions/2.7.9/lib/python2.7/site-packages (from setuptools)
Collecting appdirs>=1.4.0 (from setuptools)
  Using cached appdirs-1.4.0-py2.py3-none-any.whl
Collecting packaging>=16.8 (from setuptools)
  Using cached packaging-16.8-py2.py3-none-any.whl
Collecting pyparsing (from packaging>=16.8->setuptools)
  Using cached pyparsing-2.1.10-py2.py3-none-any.whl
Installing collected packages: appdirs, pyparsing, packaging
Successfully installed appdirs-1.4.0 packaging-16.8 pyparsing-2.1.10

markupsafe がインストールできた。

~% pip install markupsafe
Collecting markupsafe
Installing collected packages: markupsafe
Successfully installed markupsafe-0.23

直った。

% ansible --version     
ansible 2.2.1.0
  config file = 
  configured module search path = Default w/o overrides

app1 env

pyenv に入っているpythonでは、まだAnsibleが2.1.0.0のままだった。

pip install --upgrade cryptography

を実行するとエラーになる。

% pip install -U pip
Requirement already up-to-date: pip in /Users/kubotad/.pyenv/versions/app1/lib/python2.7/site-packages

ansible==2.2.1.0 の環境

% pip freeze
ansible==2.2.1.0
appdirs==1.4.0
Jinja2==2.8.1
MarkupSafe==0.23
packaging==16.8
paramiko==2.1.1
pyparsing==2.1.10
PyYAML==3.12
six==1.10.0
virtualenv==15.0.2

ansible==2.1.0.0 の環境

% pip freeze        
amqp==1.4.9
ansible==2.1.0.0
anyjson==0.3.3
appdirs==1.4.0
billiard==3.3.0.23
boto==2.41.0
bpmappers==0.8.2
celery==3.1.23
cffi==1.9.1
Django==1.8.13
django-celery==3.1.17
django-kombu==0.9.4
ecdsa==0.13
enum34==1.1.6
Fabric==1.11.1
idna==2.2
ipaddress==1.0.18
Jinja2==2.8.1
kombu==3.0.35
MarkupSafe==0.23
packaging==16.8
paramiko==1.17.1
psycopg2==2.6.2
pyasn1==0.2.2
pycparser==2.17
pycrypto==2.6.1
pyparsing==2.1.10
pytz==2016.4
PyYAML==3.12
redis==2.10.5
six==1.10.0

openssl

openssl version

でバージョンを確認したら、0.9.8 だった。
upgradeしようとしてもすでにインストール済みというメッセージがでる。

http://stackoverflow.com/questions/36372000/warning-openssl-1-0-2g-already-installed-when-using-homebrew

http://stackoverflow.com/questions/15185661/update-openssl-on-os-x-with-homebrew

% brew link openssl --force
Linking /usr/local/Cellar/openssl/1.0.2h_1... 1601 symlinks created

opensslをアップグレードしたら、cryptography がインストールできるようになった。

pip install --upgrade cryptography

Successfully built cryptography
Installing collected packages: cryptography
Successfully installed cryptography-1.7.2

ansible

% pip install --upgrade ansible
Collecting ansible


Installing collected packages: paramiko, ansible
  Found existing installation: paramiko 1.17.1
    Uninstalling paramiko-1.17.1:
      Successfully uninstalled paramiko-1.17.1
  Found existing installation: ansible 2.1.0.0
    Uninstalling ansible-2.1.0.0:
      Successfully uninstalled ansible-2.1.0.0
Successfully installed ansible-2.2.1.0 paramiko-2.1.1

うまくいった。