Network functions virtualization enables network edge functions to be relocated from dedicated hardware to distributed pools of commodity servers. Metro aggregation networks provide transport between access gateway nodes and such servers accommodating virtual network functions (VNFs). Networks need to be designed to increase the efficiency of network resource usage and reducing network cost as well as energy consumption. However, independently placing VNFs on a server from a physical network design degrades the efficiency of resource usage and causes an increase in network cost. We can avoid such problems by adequately placing each VNF in consideration of the location of access gateway nodes and a network topology. We thus propose a method for designing an optical aggregation network with VNF placement. We successfully formulate the design method as mixed-integer linear programming and demonstrate its effectiveness through intensive mathematical experiments. The experiments showed that the proposed method reduced network cost by up to about 18% while performing almost optimally in terms of server load dispersion.